Structuring AI to help you learn.
Veridia is an AI-powered STEM learning workspace designed to support real academic workflows, not just generate answers. It helps users ask better questions, receive structured explanations, draft lab reports, and create clean graphs inside a focused interface built around clarity and usability.
Home Page
Application Interface
- AI-powered STEM problem solving across subjects such as math, physics, chemistry, statistics, and related technical topics
- Structured, readable explanations designed to feel guided rather than generic
- Dedicated graphing workflow with downloadable outputs
- File uploads for prompt and lab workflows, including PDF, image, and text-based context
- Threaded AI conversations with recent and history views for continuity
- Lab Helper workflow for turning rough notes into stronger report drafts
- Feedback submission flow for product iteration
- Admin controls for user and feedback review
- Clean responsive interface with light and dark mode support
- Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS, Framer Motion
- Backend: FastAPI, SQLAlchemy, PostgreSQL, Python
- AI: OpenAI API
- Analytics: PostHog
- Graphing and parsing: matplotlib, NumPy, PyPDF, Pillow
- Billing and auth: Stripe, Google Identity / Google Auth
- A user submits a prompt, lab draft, or graphing request from the Veridia workspace.
- The backend processes the request, attaches any uploaded context, and routes the task through the appropriate service.
- OpenAI-generated output is structured and returned to the frontend for readable presentation.
- For graphing and file-based workflows, Veridia can generate downloadable visual outputs or use uploaded materials to ground the response.
Veridia is currently in a public beta phase. The product is actively being refined through testing, iteration, and user feedback, and features may continue to evolve as the platform matures.
- Set
NEXT_PUBLIC_API_URLto the public Render backend origin, for examplehttps://veridia-api.onrender.com - Set
NEXT_PUBLIC_GOOGLE_CLIENT_ID - Set
NEXT_PUBLIC_STRIPE_PRICE_ID - Set
NEXT_PUBLIC_BETA_FREE_MODE
- Start command:
python -m app.main - The backend reads Render's runtime
PORTautomatically and binds to0.0.0.0outside development - Set
ENVIRONMENT=production - Set
APP_URLto the public Vercel frontend origin - Set
API_URLto the public Render backend origin - Set
SECRET_KEYto a strong random value - Set
DATABASE_URLto the externally hosted Postgres connection string - Set
BACKEND_CORS_ORIGINSto a comma-separated list of allowed frontend origins - Set
GOOGLE_CLIENT_ID - Set
GOOGLE_CLIENT_SECRET - Set
OPENAI_API_KEY - Set
STRIPE_SECRET_KEY - Set
STRIPE_WEBHOOK_SECRET - Set
STRIPE_PRICE_ID
- For Vercel-to-Render deployments, use
SESSION_COOKIE_SECURE=trueandSESSION_COOKIE_SAMESITE=none - Leave
SESSION_COOKIE_DOMAINunset unless you intentionally need a shared parent-domain cookie - Local development can continue using
SESSION_COOKIE_SECURE=falseandSESSION_COOKIE_SAMESITE=lax
- Veridia currently treats uploaded files and generated graphs as beta-stage filesystem assets stored under
STORAGE_ROOT - The default backend storage path is local and therefore ephemeral on Render unless you attach a persistent disk
- To use a Render disk later, point
STORAGE_ROOTat the mounted disk path;UPLOAD_DIRandGRAPHS_DIRcan stay under that root or be overridden explicitly

