Lumaya is a full-stack AI companion app: a chat-based emotional support experience backed by retrieval-augmented AI, journaling, and a set of guided self-reflection tools, wrapped in a 3D animated avatar.
Internally this project is still named
wallet-monitorinpackage.json— it started life as a crypto wallet tracker and was pivoted into Lumaya. The name hasn't been updated yet.
demo.mp4
- AI chat companion — conversational support powered by Google Gemini, grounded with a Pinecone vector store for context-aware responses
- 3D avatar — an animated VRM avatar (Three.js +
@pixiv/three-vrm) that accompanies the chat experience - Journal — private journaling with entries tied to the user's account
- Guided tools — Dream Interpreter, Life Prediction, Relationship Coaching, and a Mental Health Plan generator
- Auth & accounts — email/password auth via Supabase, protected routes, user dashboard
- Payments — subscription checkout via Paddle
- Transactional email — via Resend
- Sessions & caching — Express sessions backed by Redis
Frontend — React 18, Vite, React Router, Tailwind CSS, Radix UI primitives, Framer Motion, Three.js/VRM, Supabase JS client
Backend — Node.js, Express, Redis (connect-redis sessions), Pinecone (vector search), Google Generative AI SDK, Paddle Node SDK, Resend
Data — Supabase (Postgres + Auth), with SQL migrations in supabase/migrations
AI/
├── frontend/ # React + Vite web app
│ ├── src/
│ │ ├── components/ # Pages & UI (Chat, Journal, Dashboard, Dream Interpreter, ...)
│ │ ├── services/ # API clients
│ │ ├── hooks/, context/, utils/
│ │ └── App.jsx
│ └── public/
├── backend/ # Express API
│ └── src/
│ ├── routes/ # /api/chatbot, /api/journal, /api/emails, /api/auth, /api/webhooks
│ ├── services/
│ ├── middlewares/
│ └── config/
└── supabase/
└── migrations/ # Database schema history
- Node.js 18+
- A Redis instance (local or hosted, e.g. Upstash)
- Accounts/API keys for: Supabase, Google Gemini, Pinecone, Paddle, Resend
cd frontend && npm install
cd ../backend && npm installCreate frontend/.env.local:
VITE_SUPABASE_URL=
VITE_SUPABASE_ANON_KEY=
VITE_GEMINI_API_KEY=
VITE_PADDLE_CLIENT_TOKEN=
VITE_API_BASE_URL=http://localhost:3000
VITE_FRONTEND_URL=http://localhost:5173
VITE_REDIRECT_URL=http://localhost:5173
Create backend/.env:
PORT=3000
NODE_ENV=development
SUPABASE_URL=
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
REDIS_URL=
GEMINI_API_KEY=
PINECONE_API_KEY=
PINECONE_ENVIRONMENT=
PINECONE_INDEX2=
HUGGINGFACE_API_KEY=
HUGGINGFACE_API_KEY1=
PADDLE_API_KEY=
RESEND_API_KEY=
SESSION_SECRET=
WEBHOOK_SECRET_KEY=
FRONTEND_URL=http://localhost:5173
Note: both
.env.localand.envare gitignored — never commit real keys. Rotate any keys that may have been exposed previously.
# backend (Express API on :3000)
cd backend && npm run dev # auto-restarts on file changes (node --watch)
# or: npm start # plain node, no watch
# frontend (Vite dev server on :5173)
cd frontend && npm run devThis repo includes a render.yaml Blueprint that provisions two services:
lumaya-backend— Node web service, rootbackend/, buildnpm install, startnpm startlumaya-frontend— static site, rootfrontend/, buildnpm install && npm run build, publishdist/, with SPA rewrite toindex.html
To deploy:
- In the Render dashboard, choose New → Blueprint and point it at this repo. Render will read
render.yamland create both services. - Fill in the env vars marked
sync: falsein the dashboard (Supabase, Gemini, Pinecone, Paddle, Resend keys, etc.) — Render never reads secret values from the repo. - Add a Redis instance (Render's Key Value service, or an external one like Upstash) and set
REDIS_URLon the backend. - Once both services are live, set
VITE_API_BASE_URLon the frontend to the backend'shttps://lumaya-backend.onrender.com-style URL, andFRONTEND_URLon the backend to the frontend's URL (needed for CORS) — then redeploy.
If you already have live services under different names (this product has previously been deployed on Render), either reuse those exact names when applying the Blueprint, or update FRONTEND_URL/CORS in backend/src/app.js and VITE_API_BASE_URL in the frontend env to match your real URLs — this Blueprint intentionally doesn't touch any existing deployment.
frontend-ai— the standalone, further-rebranded web frontend for Lumayalumaya— the native Expo/React Native mobile app for LumayaxrypttSaaS— the original crypto wallet-monitoring product this codebase was forked from