CUHP Devs is a coding practice and student developer community platform organized as a Turbo + pnpm monorepo. It combines a Next.js frontend, an Express API, a Socket.IO realtime service, MongoDB-backed shared data models, and a local problem pipeline for coding challenges with generated multi-language boilerplate.
The repository is no longer a generic Turborepo starter. It already contains implemented flows for authentication, onboarding/profile setup, dashboard views, problem practice, realtime chat rooms, community posts/snippets, resources, settings, and public developer profiles.
Note
A student developer platform that combines coding practice, public profiles, community interaction, realtime chat, and curated learning resources in one monorepo.
apps/
web/ Next.js frontend
http-backend/ Express REST API
socket/ Socket.IO realtime service
problems/ Local problem statements, testcases, and generated boilerplate
packages/
ui/ Shared UI components
db/ Shared Mongoose models, schemas, and DB scripts
common/ Shared common package
boilerplate-generator/ Problem boilerplate generation package
eslint-config/ Shared lint config
typescript-config/ Shared tsconfig presets
- Built with Next.js App Router and React 19.
- Uses server components and client components together.
- Fetches backend data through shared API helpers.
- Uses Zustand for auth, onboarding, theme, sidebar, and toast state.
- Uses Framer Motion for animated transitions and richer UI behavior.
- Uses
socket.io-clientfor realtime community chat features.
- Built with Express + TypeScript.
- Exposes REST endpoints for auth, users, problems, submissions, code execution, languages, and posts.
- Uses JWT in cookies for auth.
- Uses Zod for request validation in the auth flow.
- Starts a background result worker after MongoDB connection is ready.
- Separate realtime service using Socket.IO.
- Authenticates sockets before connection.
- Handles chat room join/leave flows, member presence, room stats, typing events, message send/delete, and room creation.
- Watches Mongo post inserts with change streams and broadcasts new posts when supported by MongoDB.
- Stores coding challenge assets locally.
- Each problem can contain
Problem.md,Structure.md, testcase input/output files, and generated language boilerplates. - Example problem folders in the repo show the expected structure for challenge authoring.
- Shared UI library used by the web app.
- Contains reusable section UIs for dashboard, practice, community, auth, navigation, settings, and profile overview.
- Includes Monaco editor integration and markdown rendering utilities.
- Shared Mongoose connection, models, schemas, interfaces, and enums.
- Includes scripts for syncing problems, updating problem data, and seeding testcases into MongoDB.
- Parses a problem
Structure.mdfile. - Generates starter boilerplate and full executable wrappers for C++, Rust, Python, and JavaScript.
- Supports generation for one problem slug or for all problems in the local catalog.
- Next.js 16
- React 19
- Tailwind CSS 4
- Framer Motion
- Zustand
- Monaco Editor via
@monaco-editor/react react-markdown+remark-gfmsocket.io-clientlucide-reactandreact-icons
- Express 5
- Socket.IO
- MongoDB + Mongoose
- JWT + cookie-based auth
- bcrypt
- Zod
- Axios
- Piston-based code execution
p-limitfor bounded concurrent testcase execution
- pnpm workspaces
- Turborepo
- TypeScript
- ESLint
- Prettier
Warning
Some sections are fully wired, while others still rely on mocked payloads, staged UI, or infrastructure assumptions such as MongoDB replica-set support for change streams.
This README should reflect the code honestly, so these limitations are worth calling out:
- The current
README.mdpreviously lagged behind the actual product and still looked like a starter repo. - Some dashboard, community, and resources content is still mocked or partially hardcoded.
- Practice category filtering is not fully backed by resolved tag metadata yet.
- The visible practice
Submitbutton is ahead of the fully polished end-to-end submission UX in the page layer. - Mongo change stream based post broadcasting works only when MongoDB is configured appropriately.
- A few UI sections are clearly scaffolded for future growth, especially side widgets and some resources/settings capabilities.
From the repository root:
pnpm install
pnpm build
pnpm dev
pnpm lint
pnpm check-typesProblem and DB utility scripts:
pnpm generate-boilerplate
pnpm problem-update:db
pnpm problems-sync:db
pnpm testcases-push:db| Service | Default Port |
|---|---|
| Web app | http://localhost:3000 |
| HTTP backend | http://localhost:3001 |
| Socket server | http://localhost:4001 |
- The workspace uses
pnpmandturbofrom the repo root. - The backend and socket apps depend on the shared
@repo/dbpackage. - The web app expects the backend and socket services to be available for full functionality.
- The project includes local problem assets and scripts, so the coding platform is not just UI-only; it already includes challenge content, default code generation, and execution plumbing.