Thoth is a real-time, collaborative dream archiving platform. It visualizes the collective subconscious of humanity through an interactive world map, transcribing and analyzing dreams from users across the globe.
Available on Web, Android, and iOS via Capacitor.
- GitHub Discussions - ๅ ๅ ฅ็คพๅบ่ฎจ่ฎบ
- Discord - ๅฎๆถไบคๆตๅๆฏๆ
- Voice-to-Dream: Real-time transcription of dream narratives using Gemini API
- Global Dream Map: Interactive D3.js visualization showing dream activity by country
- Subconscious Pulse: Visual indicators of live archive updates
- Personal Archive: Secure storage for your own dream history with audio playback
- Imagery Hall: Explore the collective symbols and themes emerging from the global archive
- Cross-Platform: Web (PWA), Android, and iOS apps with shared codebase
- Framework: React 18 + TypeScript
- Build Tool: Vite 6
- Styling: Tailwind CSS 3
- Animation: Framer Motion
- Visualization: D3.js, TopoJSON
- Mobile: Capacitor 7 (Android + iOS)
- State & Data: Firebase Firestore, React Context
- Authentication: Firebase Auth (Google Sign-In)
- Database: Cloud Firestore
- Audio Storage: Cloudflare R2 (web) / Firebase Storage (mobile fallback)
- AI Transcription: Google Gemini API
- Dev Server: Express (presign endpoints for R2 uploads)
- Android: Native project, minSdk 24, targetSdk 36
- iOS: Capacitor iOS project
- Build: Gradle (Android), Xcode (iOS)
Thothapp/
โโโ src/ # React web app source
โ โโโ components/ # UI components (RecordView, DreamPanel, etc.)
โ โโโ hooks/ # Custom hooks (useAuth, useDreams, useRecording)
โ โโโ lib/ # Utilities (storage, r2, firebase config)
โ โโโ App.tsx # Main app with routing
โโโ android/ # Android native project
โโโ ios/ # iOS native project
โโโ server.ts # Express dev server (R2 presign)
โโโ capacitor.config.ts # Capacitor configuration
โโโ vite.config.ts # Vite build config
โโโ firebase.json # Firebase hosting rules
Create a .env file in the root directory:
# Firebase (Required for all platforms)
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
# Gemini API (Required for voice transcription)
VITE_GEMINI_API_KEY=your_gemini_api_key
# R2 Storage (Required for web audio uploads)
R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
R2_BUCKET=your-bucket-name
R2_ACCESS_KEY_ID=your-access-key
R2_SECRET_ACCESS_KEY=your-secret-key
R2_PUBLIC_URL=https://your-public-url.comSee .env.example for the complete template.
npm install
npm run dev # Start Vite dev server (with HMR)
npm run build # Production build to dist/
npm run preview # Preview production buildThe dev server runs on http://localhost:5173 with the Express API proxy.
npm run build # Build web assets first
npx cap sync android # Sync web assets to Android
npx cap open android # Open in Android StudioOr use the provided scripts:
./build_android.ps1 # Build and sync for Androidnpm run build
npx cap sync ios
npx cap open ios # Open in Xcode- Create a project in the Firebase Console
- Enable Firestore Database in production mode
- Enable Google Authentication
- Register a Web App and copy the configuration to
.env - Deploy Firestore rules:
firebase deploy --only firestore:rules - For Android: Add
google-services.jsontoandroid/app/ - For iOS: Add
GoogleService-Info.plisttoios/App/App/
- R2 on Mobile: Capacitor apps don't have the Express server, so audio uploads fall back to Firebase Storage on native platforms
- allowMixedContent: Currently enabled in
capacitor.config.tsfor R2 HTTP URLs โ should be removed once all R2 assets use HTTPS - Large Bundle: Main JS bundle is ~1.3MB โ code splitting planned for future release
- Connect your GitHub repository
- Set build command:
npm run build - Set output directory:
dist - Add all
VITE_*environment variables
- Build release APK/AAB via Android Studio
- Sign with upload key (configured in
android/app/thoth-upload-key.jks) - Publish to Google Play Store
้่ฆๅธฎๅฉ๏ผๆไปฌๆๅค็งๆนๅผๅฏไปฅๆฏๆไฝ ๏ผ
- GitHub Discussions Q&A: ็นๅป่ฟ้ ๆ้ฎๅๅ็ญ้ฎ้ข
- Discord ็คพๅบ: ๅ ๅ ฅๆไปฌ็ Discord ไธๅ ถไป็จๆทๅๅผๅ่ ๅฎๆถไบคๆต
- ๆๆกฃ: ๆฅ็้กน็ฎๆๆกฃ ไบ่งฃๆดๅคไฟกๆฏ
- Bug ๆฅๅ: ๅฆๆๅ็ฐ้ฎ้ข๏ผ่ฏท ๆไบค Issue
ๆไปฌๆฌข่ฟๆๆๅฝขๅผ็่ดก็ฎ๏ผๆฅ็ Good First Issues ๅผๅงไฝ ็่ดก็ฎไนๆ ใ
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.