Skip to content

ArshiaAdhya/Sentia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Demo Video

https://drive.google.com/file/d/1zRkg_NkqOIc3lAifTnUtsda6SN8711Vk/view?usp=drive_link

Backend flow

%%{init: {'theme': 'base', 'themeVariables': { 'lineColor': '#222', 'sequenceNumberColor': '#fff', 'actorBorder': '#222', 'noteBorderColor': '#222' }}}%%
sequenceDiagram
    autonumber
    actor User
    participant App as Mobile App (Flutter)
    participant Auth as Firebase Auth
    participant Server as Backend (Dart Frog)
    participant DB as Supabase
    participant AI as Gemini 2.0 API

    rect rgb(236, 225, 201)
        note right of User: Phase 1: Onboarding & Identity
        User->>App: Click "Sign in with Google"
        App->>Auth: Authenticate
        Auth-->>App: Return ID Token
        User->>App: Complete "Personality Quiz"
        App->>Server: POST /user/onboard (Token + Traits)
        Server->>DB: INSERT User Profile & Traits
        DB-->>Server: Success
        Server-->>App: 200 OK (User Created)
    end

    rect rgb(167, 201, 154)
        note right of User: Phase 2A: Session Start (The Rescue & Reset)
        
        User->>App: Opens App (Morning Launch)
        App->>Server: GET /sessions/today
        
        Note over Server: THE MORNING CLEANUP
        Server->>DB: SELECT sessions WHERE date < TODAY
        
        loop For each abandoned session
            Server->>DB: FETCH messages
            Server->>AI: "Summarize this forgotten chat"
            Server->>DB: INSERT into 'journal_entries' (Mark as "Auto-Saved")
            Server->>DB: DELETE session & messages
        end
        
        Server->>DB: SELECT sessions WHERE date = TODAY
        Server-->>App: Returns [] (Clean Slate)
        
        alt Start New Session (Frictionless)
            User->>App: Taps "Start New Session"
            App->>Server: POST /session/start (No 
            
            Server->>DB: Check 'last_checkin_date'
            alt First time today?
                Server->>DB: UPDATE Users SET xp = xp + 50, last_checkin = NOW()
                Note over App: Toast: "Daily Check-in: +50 XP!"
            end
            
            Server->>DB: INSERT new session
            Server-->>App: { session_id: "123", xp_gained: 50 }
            
        else Resume Session (Today Only)
            User->>App: Taps "Session 1"
            App->>Server: GET /chat/history?session_id=123
            Server-->>App: Returns messages
        end
    end

    rect rgb(167, 201, 154)
        note right of User: Phase 2B: The Chat (Pure Therapy)
        User->>App: "I feel ignored by my friends."
        App->>Server: POST /chat (msg, session_id="123")
        
        Server->>DB: FETCH Context (Traits + Journal)
        Server->>AI: Generate Therapist Reply
        AI-->>Server: "That sounds isolating..."
        Server->>DB: INSERT Chat Log
        
        Server-->>App: Display Reply
    end

    rect rgb(167, 201, 154)
        note right of User: Phase 2C: The Walk Away (The Shredder & Invisible Tracker)
        User->>App: Clicks "End Session"
        
        App->>Server: POST /session/end (session_id="123")
        
        Note over Server: 1. THE HARVEST
        par AI Sentiment Analysis
            Server->>DB: FETCH all messages
            Server->>AI: "Extract JSON: Summary, start_mood, end_mood, mood_improved"
            AI-->>Server: JSON { summary: "...", mood_improved: true }
            Server->>DB: INSERT into 'journal_entries'
            Server->>DB: UPDATE 'user_traits'
        end

        Note over Server: 2. THE REWARD
        Server->>Server: Check JSON: Is mood_improved == true?
        
        alt Mood Improved?
            Server->>DB: UPDATE Users SET xp = xp + 100
            Note over App: Toast: "AI noticed you're feeling better! +100 XP"
        end

        Note over Server: 3. THE SHREDDER (Privacy)
        critical Delete Raw Data
            Server->>DB: DELETE FROM chat_messages WHERE session_id='123'
            Server->>DB: DELETE FROM chat_sessions WHERE id='123'
        end
        
        Server-->>App: { xp_gained: 100, summary: "Saved to Journal" }
        App->>User: Show "Session Complete" & Garden Link
    end


    rect rgb(132, 165, 157)
        note right of User: Phase 3: The Reward (Gamification)
        User->>App: Click "Buy Blue Orchid (50 XP)"
        App->>Server: POST /garden/buy (Item="orchid")
        
        Server->>DB: SELECT xp FROM Users
        
        alt Sufficient Funds
            Server->>DB: UPDATE Users SET xp = xp - 50
            Server->>DB: INSERT into user_garden_items
            Server-->>App: 200 OK (Success)
            App->>User: Render Flower in Stack
        else Insufficient Funds
            Server-->>App: 400 Error
            App->>User: Show "Not enough XP"
        end
    end
Loading

About

A mobile application designed to foster inner growth and emotional well-being, featuring an empathetic chatbot, AI-powered journaling and mood-responsive themes. Built with Flutter, Dart Frog, and Generative AI.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors