Skip to content

2. GITHUB REPOSITORY STRUCTURE

Collins Dada edited this page Jun 10, 2025 · 1 revision
mindmirror/
├── .github/
│   └── workflows/
│       └── ci.yml                      # CI/CD via GitHub Actions (Netlify + tests)
│
├── public/                             # Public assets (served statically)
│   ├── favicon.ico
│   ├── manifest.json                   # PWA config if needed
│   └── robots.txt
│
├── src/                                # Core app logic (Bolt.new structure)
│   ├── app/                            # Application routing and layout
│   │   ├── layout.js                   # Root layout (Nav, Auth wrapper)
│   │   └── page.js                     # Landing page logic
│
│   ├── pages/                          # Route-based pages (Next.js or Bolt-style)
│   │   ├── index.jsx                   # Homepage with hero/demo call-to-action
│   │   ├── dashboard.jsx              # Authenticated dashboard (video carousel, journal, streaks)
│   │   ├── journal.jsx                # Journaling & gratitude tracking
│   │   ├── mood-checkin.jsx           # Daily mood tracker
│   │   ├── settings.jsx               # Profile + voice/video config
│   │   └── paywall.jsx                # RevenueCat integration view
│
│   ├── components/                     # Reusable UI components
│   │   ├── VideoTherapist.jsx         # Tavus-generated avatar video player
│   │   ├── VoiceResponder.jsx         # ElevenLabs dynamic audio player
│   │   ├── MoodTracker.jsx            # Emoji slider or mood form
│   │   ├── JournalCard.jsx            # Displays journal entries
│   │   ├── StreakCounter.jsx          # Tracks user consistency
│   │   ├── PaywallModal.jsx           # RevenueCat paywall display
│   │   └── Navbar.jsx / Footer.jsx    # Layout components
│
│   ├── styles/                         # Tailwind, CSS Modules, or SCSS
│   │   └── globals.css
│
│   ├── hooks/                          # Custom hooks
│   │   └── useUserMemory.js           # Local storage or Supabase memory
│   │   └── useVoicePlayback.js
│
│   ├── lib/                            # Utility libs and integrations
│   │   ├── tavus.js                   # Tavus API wrapper
│   │   ├── elevenlabs.js              # ElevenLabs API wrapper
│   │   ├── revenuecat.js              # RevenueCat SDK logic
│   │   ├── algorand.js                # Optional Algorand smart contract handler
│   │   └── supabaseClient.js          # Auth / DB handler (if using Supabase)
│
│   ├── context/                        # React Contexts (auth, user state)
│   │   └── AuthContext.js
│
│   ├── data/                           # Static JSON, mock sessions
│   │   └── dummyUsers.json
│   │   └── languages.json             # Supported languages list
│
│   └── utils/                          # Pure functions, helpers
│       ├── encryptData.js             # Local encryption logic
│       ├── trackStreaks.js
│       └── formatDate.js
│
├── mobile/                             # Expo/React Native app (if using mobile client)
│   ├── App.js
│   ├── screens/
│   ├── components/
│   └── revenuecat/
│       └── PaywallConfig.js
│
├── functions/                          # Netlify Functions (backend logic)
│   ├── create-video.js                # Calls Tavus to create video
│   ├── synthesize-voice.js            # Calls ElevenLabs to generate audio
│   ├── get-user-data.js
│   └── track-mood.js
│
├── scripts/                            # CLI tools, test seeders, deploy helpers
│   ├── deploy.js
│   └── seed.js
│
├── tests/                              # Unit & integration tests
│   ├── moodTracker.test.js
│   ├── videoTherapist.test.js
│   └── journalLogic.test.js
│
├── docs/                               # Planning docs, API references, diagrams
│   ├── architecture.md
│   ├── api-reference.md
│   └── pitch-deck.pdf
│
├── .env.example                        # Example env vars (Tavus, 11Labs, RC, etc.)
├── netlify.toml                        # Netlify deploy config
├── README.md                           # Clean, optimized for judges (includes demo)
├── LICENSE
└── bolt.json                           # Bolt.new project config

Clone this wiki locally