Skip to content
OV111Public

About

Next-Generation Development Platform which gonna be greatest EVERπŸ’»

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

633 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Vahoha

Developer learning that won't let you fake it.

Roadmaps you have to earn: server-graded exams gate every layer, and an AI mentor guides you through your weak spots.

vahoha.com Β· @vahoha_

React Node.js MongoDB Redis Tailwind CSS Vite


What is Vahoha?

Vahoha is a learning platform for developers who want proof they actually understood what they studied. Every roadmap layer is locked until you pass a server-graded exam on it; failing records your specific weak spots, and a personal AI mentor (grounded in your real progress and exam history) helps you close them before you retry. Community posts and coding challenges sit around that core loop. Built from scratch, solo, by Vahe Ohanyan. (Formerly called DevsWebs; the repository folder still uses the old name.)


Stack

Layer Technologies
Frontend React 19, Vite 7, Tailwind v4, Zustand, Framer Motion, GSAP, CodeMirror
Backend Node.js 22 (ESM), Express 5, MongoDB (native driver), WebSockets (ws), Zod
AI Groq (openai/gpt-oss-120b) for the mentor, teach-back grading and exam-bank generation
Auth JWT access tokens (15 min) + rotating httpOnly refresh cookie, bcrypt, Google and GitHub OAuth
Billing Polar (Merchant of Record), signed webhooks. Built, not enforced (BILLING_ENFORCED=false)
Infrastructure Redis, BullMQ, Cloudinary, isolated-vm (code-runner sandbox), Docker
Email Resend
Testing Vitest (unit, integration, API, security, performance, concurrency, WebSocket, queue), Playwright (E2E)
DX Husky, lint-staged, ESLint, Swagger UI, nodemon

Features

The core loop

  • Learning roadmaps: 15 categories of visual paths with tracks and layers. Each layer is locked until you pass its exam; progress is saved server-side
  • Exam engine: server-graded multiple choice, 15 questions per attempt, pass mark 80. Answer keys never leave the server, choices are shuffled per attempt, unseen questions are served first, 3 attempts per day plus a cooldown after a fail
  • AI mentor: per-user agent with tools into your progress, exam history and weak spots. Socratic (guides, doesn't hand over answers); streaming, sessions, 30 messages a day
  • Teach-back: explain a topic in your own words and get it graded against a rubric. One slice shipped; the full voice exam is a spec (docs/product/VOICE_EXAM_SPEC.md)
  • Mastery: per-topic status and a "next step" derived from exams, teach-back and challenge results
  • Dev library: curated books, docs and guides mapped to roadmap layers
  • Blog posts tagged to layers: a layer shows the posts written for it

Around it

  • Coding challenges (Arena): catalog, sandboxed grading, community proposals with admin review, XP-priced hints
  • Community: Markdown blog, profiles, follows, DMs and group chat over WebSockets, queue-backed notifications
  • Billing: Polar checkout and subscription state (inert until enabled)
  • Pilot analytics: 7 server-side events and an admin-only funnel (GET /api/admin/funnel)
  • Search, OAuth, dark/light theme

Getting Started

Prerequisites

  • Node.js 22
  • MongoDB (local or Atlas)
  • Redis (local or Docker). Optional: set REDIS_ENABLED=false to skip it

Install

npm install
# create backend/.env: see Environment Variables below (there is no .env.example yet)

Run

# Frontend + backend + Redis together
npm run dev:full

# Frontend only
npm run dev

# Backend only
npm run server

# Start Redis via Docker (if not already running)
npm run redis

Seed content (once per database)

npm run seed:roadmap                     # tracks and layers
npm run seed:challenges                  # Arena challenges
npm run seed:concepts                    # concept definitions for the mentor
npm run seed:rubrics                     # teach-back rubrics
node backend/seeders/examSeeder.js       # exam banks via Groq; see docs/product/EXAM_INTEGRITY.md
npm run admin:grant -- you@example.com   # make yourself an admin

Build

npm run build

Testing

npm run test:unit           # Unit tests
npm run test:integration    # Integration (real MongoDB via in-memory server)
npm run test:api            # API contract tests
npm run test:websocket      # WebSocket tests
npm run test:queue          # BullMQ worker tests
npm run test:security       # Security tests
npm run test:performance    # Performance benchmarks
npm run test:concurrency    # Race-condition and concurrency tests
npm run test:unit:coverage  # Coverage report
npm run lint

Project Structure

β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ app.js              # Express app factory (helmet, CORS, routes)
β”‚   β”œβ”€β”€ server.js           # Entry point (HTTP + WebSocket + workers)
β”‚   β”œβ”€β”€ config/             # DB (and indexes), Redis, Cloudinary, Swagger
β”‚   β”œβ”€β”€ routes/             # Route definitions
β”‚   β”œβ”€β”€ controllers/        # Route handlers
β”‚   β”œβ”€β”€ services/           # Business logic (exam engine, events, blogs, agent/…)
β”‚   β”œβ”€β”€ modules/            # Self-contained features: billing, mastery, coding-challenges, contact
β”‚   β”œβ”€β”€ middleware/         # authenticate, requireAdmin, validate, aiRateLimit
β”‚   β”œβ”€β”€ tools/              # Mentor tool definitions
β”‚   β”œβ”€β”€ seeders/ scripts/   # Content seeding and one-off maintenance
β”‚   β”œβ”€β”€ workers/ queues/    # BullMQ
β”‚   β”œβ”€β”€ websocket/          # Chat server
β”‚   └── tests/              # unit | integration | api | security | perf | ws | queue
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ features/           # One folder per product area (Roadmap, AI-Agent, mastery, billing, …)
β”‚   β”œβ”€β”€ pages/              # Route-level pages
β”‚   β”œβ”€β”€ components/         # Shared UI
β”‚   β”œβ”€β”€ stores/             # Zustand state
β”‚   └── data/roadmaps/      # Roadmap content, one JSON file per category
β”œβ”€β”€ constants/              # Shared constants (API base URL, categories)
β”œβ”€β”€ config/                 # Vitest configs per test suite
β”œβ”€β”€ docs/                   # Plans, specs and strategy (index below)
└── public/                 # Static assets

Environment Variables

backend/.env:

# Server
PORT=5000
FRONTEND_URL=http://localhost:5173
NODE_ENV=development

# Database
MONGO_URI=

# Auth (note the capitalisation of JWT_Secret)
JWT_Secret=
JWT_REFRESH_SECRET=
GOOGLE_CLIENT_ID=
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=

# Redis (optional: REDIS_ENABLED=false skips it)
REDIS_ENABLED=true
REDIS_URL=

# AI
GROQ_API_KEY=

# Images and email
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
RESEND_API_KEY=

# Billing (see docs/engineering/BILLING.md); keep BILLING_ENFORCED=false during the pilot
POLAR_ACCESS_TOKEN=
POLAR_PRO_PRODUCT_ID=
POLAR_WEBHOOK_SECRET=
BILLING_ENFORCED=false

Frontend (.env): VITE_API_BASE_URL, VITE_WS_URL, VITE_GOOGLE_CLIENT_ID. Other switches (MAINTENANCE_MODE, ALLOW_UNSAFE_RUNNER, WS_EXTRA_ORIGINS, CONTACT_INBOX) are explained in docs/DEPLOYMENT.md.


API Docs

Swagger UI is available at /api-docs when the backend is running.


Status

Status Milestone
βœ… Community platform: blogs, profiles, follows, real-time chat
βœ… Learning roadmap: server-side progress, locked layers
βœ… Dev library: curated resources linked to roadmap layers
βœ… Exam engine: server-graded layer exams, pass at 80
βœ… AI mentor: tools into your progress, Socratic, sessions
βœ… Mastery map and learner context
βœ… Coding challenges (Arena): sandboxed grading, proposals
βœ… Billing: Polar, sandbox-verified, not enforced
βœ… Pilot analytics: events and funnel
🟑 Exam banks: generator built; banks must be seeded and hand-checked per layer
πŸ”² Voice exam (teach-back): specified, not built
πŸ”² Public progress profiles, certificates, admin panel
πŸ”² Real users: the pilot has not started

Day-to-day status and the pre-pilot checklist: docs/PILOT_STATUS.md.


Deployment

Backend on Render (render.yaml), frontend on Vercel (vercel.json), database on MongoDB Atlas. A Dockerfile is included for running the API in a container. Full steps: docs/DEPLOYMENT.md.


Docs

Full index: docs/README.md.

Doc What it is
docs/strategy/VISION.md Business and product framing
docs/PILOT_STATUS.md What's done, what's left before the first user
docs/strategy/STARTUP_CRITIQUE_2026-10.md Brutally honest review of the project
docs/strategy/STARTUP_REVIEW_2026-10.md Competitive review and 90-day plan
docs/strategy/OUTREACH_KIT.md How to find and interview the first users
docs/product/EXAM_INTEGRITY.md Anti-cheating plan and its honest limits
docs/product/XP_SYSTEM.md XP ideas, each with a critique
docs/engineering/ROADMAP_BUILD_PLAN.md Build status and phase plan
docs/product/VOICE_EXAM_SPEC.md Spoken teach-back exam spec
docs/engineering/BILLING.md Billing setup and operations
docs/product/FUTURE_IDEAS.md Unscoped ideas, parked until the pilot
docs/engineering/ARCHITECTURE.md, docs/engineering/SECURITY.md, docs/engineering/ISSUES.md Technical status
docs/strategy/BUSINESS_MODEL.md, docs/strategy/GROWTH_PLAYBOOK.md, docs/strategy/ADVISORY_BOARD_REPORT.md, docs/strategy/STARTUP_ADVISOR_ANALYSIS.md Strategy
docs/founder/ Founder-skill outputs: idea validation, personas, interview script, competitor matrix

Built by Vahe β€” one laptop, one idea, every line of code.

About

Next-Generation Development Platform which gonna be greatest EVERπŸ’»

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages