<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nikita Parjane</title>
    <description>The latest articles on DEV Community by Nikita Parjane (@nikitaparjane27).</description>
    <link>https://dev.to/nikitaparjane27</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4112704%2F5bd506a6-5ed0-49f9-b58a-d7acafe3dfe3.png</url>
      <title>DEV Community: Nikita Parjane</title>
      <link>https://dev.to/nikitaparjane27</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nikitaparjane27"/>
    <language>en</language>
    <item>
      <title>Building a Secure "Personal Gemini Journal" — Gen AI Academy APAC C3</title>
      <dc:creator>Nikita Parjane</dc:creator>
      <pubDate>Sun, 06 Sep 2026 19:55:43 +0000</pubDate>
      <link>https://dev.to/nikitaparjane27/building-a-secure-personal-gemini-journal-gen-ai-academy-apac-c3-4pfg</link>
      <guid>https://dev.to/nikitaparjane27/building-a-secure-personal-gemini-journal-gen-ai-academy-apac-c3-4pfg</guid>
      <description>&lt;p&gt;Submission for the Google Cloud x Hack2Skill Ideathon Challenge: Build a Secure "Personal Gemini Journal" — Gen AI Academy APAC Edition, Cohort 3.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;Most AI-generated apps look great in a demo and fall apart in production — hardcoded keys, no auth boundaries, shared databases with zero isolation. The challenge: configure Google AI Studio to think like a security engineer before writing a single line of code, then ship a real, production-grade application on top of that foundation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 1 — Configuring AI Studio as a Security-First Foundation
&lt;/h2&gt;

&lt;p&gt;Before generating any code, I set up Google AI Studio with custom System Instructions establishing a standing "constitution" for the build: threat-model every feature before implementing it, never hardcode secrets, enforce per-user database isolation by default, and apply secure coding standards throughout.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkmowlf4xy7qrqh76rpap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkmowlf4xy7qrqh76rpap.png" alt=" " width="800" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 2 — What I Built
&lt;/h2&gt;

&lt;p&gt;A full-stack Personal Gemini Journal: React (Vite) frontend, Node.js/Express backend.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real Firebase Authentication — email/password sign-in via the Firebase client SDK. Every backend API call carries the resulting ID token, verified server-side with the Firebase Admin SDK before any data is touched.&lt;/li&gt;
&lt;li&gt;Multi-turn AI journaling — real conversations with the Gemini API, with cascading model fallback for resilience.&lt;/li&gt;
&lt;li&gt;Isolated Firestore storage — every user's data lives at /users/{uid}, keyed strictly by the server-verified UID — never a client-supplied field. Matching firestore.rules enforce the same boundary.&lt;/li&gt;
&lt;li&gt;Secure key management — the Gemini API key is designed to be retrieved via Google Cloud Secret Manager at runtime, never hardcoded.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpug1xowx8bknjxn7ci41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpug1xowx8bknjxn7ci41.png" alt=" " width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 3 — Feature Enhancements Beyond the Base Spec
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Multi-tab conversations — each chat tab is an independent thread, so a user can hold several parallel reflections without losing context.&lt;/li&gt;
&lt;li&gt;Smart RAG semantic search — query past entries by meaning, not keyword matching.&lt;/li&gt;
&lt;li&gt;Autonomous goal-extraction agent — synthesizes unstructured journal logs into milestones, roadblocks, and a prioritized action checklist.&lt;/li&gt;
&lt;li&gt;Emotional trend analytics — aggregated positivity scoring with an on-demand Gemini-generated deep-dive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F637ombrm0cdcqdhbs5el.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F637ombrm0cdcqdhbs5el.png" alt=" " width="799" height="466"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp9shzyh3toy01fvflezk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp9shzyh3toy01fvflezk.png" alt=" " width="800" height="454"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2ye0klilztaojoffhpze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2ye0klilztaojoffhpze.png" alt=" " width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Dockerized with a multi-stage build (React frontend compiled and served by the same Express container as the API), Cloud Run–ready, health-check-safe on Cloud Run's injected $PORT.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/Nikita-Parjane27/personal-gemini-journal-fullstack" rel="noopener noreferrer"&gt;https://github.com/Nikita-Parjane27/personal-gemini-journal-fullstack&lt;/a&gt;&lt;br&gt;
Video walkthrough: &lt;a href="https://youtu.be/ECT_7hqBh3w" rel="noopener noreferrer"&gt;https://youtu.be/ECT_7hqBh3w&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  AccelerateAIwithCloudRun #GenAIAcademy #GoogleCloud #Hack2Skill
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>cloud</category>
      <category>google</category>
      <category>security</category>
    </item>
  </channel>
</rss>
