One place for developers to learn, build, and grow together.
A community-driven platform built with modern technologies to help developers become 10x better.
Getting Started β’ Project Structure β’ Contributing β’ Development
- π Turborepo - High-performance monorepo build system with intelligent caching
- β‘ Bun - Fast JavaScript runtime and package manager
- π Next.js 16 - React framework for the web frontend
- π₯ Hono - High-performance TypeScript backend framework
- π¦ Shared Packages - Reusable schemas, UI components, and configurations
- π¨ Shadcn/UI - Beautiful, accessible component library
- π Type-Safe - End-to-end TypeScript with shared Zod schemas
- π Code Quality - ESLint, Prettier, Husky, and Commitlint
10xcoder.club/
βββ apps/
β βββ web/ # Next.js frontend application
β β βββ app/ # App router pages
β β βββ components/ # App-specific components
β β βββ env/ # Environment configuration
β β βββ lib/ # Utility functions
β β
β βββ server/ # Hono backend API (main)
β β βββ src/
β β βββ config/ # Environment & app configuration
β β βββ db/ # Database utilities (Drizzle ORM)
β β βββ routes/ # API routes
β
βββ packages/
β βββ schemas/ # Shared Zod schemas & TypeScript types
β βββ ui/ # Shared UI components (Shadcn/UI)
β βββ eslint-config/ # Shared ESLint configuration
β βββ typescript-config/ # Shared TypeScript configuration
β
βββ scripts/ # Utility scripts
β βββ ui-add.sh # Add shadcn/ui components
β βββ ui-diff.sh # Diff shadcn/ui components
β
βββ turbo.json # Turborepo configuration
βββ package.json # Root package configuration
- Bun v1.2+ - Install with:
curl -fsSL https://bun.sh/install | bash - PostgreSQL - For the API database
- Git - Version control
-
Clone the repository
git clone https://github.com/techysiddhant/10xcoder.club.git cd 10xcoder.club -
Install dependencies
bun install
-
Set up environment variables
Copy the example environment files and configure them:
# Server API environment (Hono) cp apps/server/.env.example apps/server/.env # Web environment cp apps/web/.env.example apps/web/.env.local
Edit the files with your configuration (see Environment Variables section).
-
Set up the database
The server requires Postgres + Redis. The easiest way to run them locally is:
bun --cwd apps/server run dev:services
This starts Postgres (on
localhost:5433) and Redis (onlocalhost:6379) usingapps/server/docker-compose.dev.yml. -
Start development servers
bun run dev
-
Open in browser
- Web App: http://localhost:3000
- API Server (Hono): http://localhost:8000
- Health check: http://localhost:8000/health
| Variable | Required | Default | Description |
|---|---|---|---|
NODE_ENV |
No | development |
Environment mode: development, test, production |
PORT |
No | 8000 |
API server port |
LOG_LEVEL |
No | info |
Logging level: debug, info, warn, error |
CORS_ORIGIN |
No | - | Comma-separated allowed origins (permissive in dev if unset) |
POSTGRES_USER |
Yes | - | PostgreSQL username |
POSTGRES_PASSWORD |
Yes | - | PostgreSQL password |
POSTGRES_DB |
Yes | - | PostgreSQL database name |
POSTGRES_HOST |
Yes | - | PostgreSQL host |
POSTGRES_PORT |
No | 5432 |
PostgreSQL port |
| Variable | Required | Default | Description |
|---|---|---|---|
NEXT_PUBLIC_API_URL |
No | http://localhost:8000 |
Backend API URL |
Notes:
- The web app uses cookie-based auth and sends credentials (
withCredentials: true), soCORS_ORIGINon the server must include the web origin (e.g.http://localhost:3000).
Run from the repository root:
| Command | Description |
|---|---|
bun run dev |
Start web + server in development mode |
bun run build |
Build all apps and packages |
bun run lint |
Lint all apps and packages |
bun run typecheck |
Run TypeScript type checking |
bun run format |
Format code with Prettier |
bun run format:check |
Check code formatting |
bun run clean |
Clean all build outputs |
bun run ui:add <component> |
Add shadcn/ui component to packages/ui |
bun run ui:diff |
Check for shadcn/ui updates |
Use the helper script to add shadcn/ui components to the shared UI package:
# Add a single component
bun run ui:add button
# Add multiple components
bun run ui:add button dialog sheet avatarEdit schemas in packages/schemas/src/index.ts. These Zod schemas are used by both the frontend and backend for:
- API request/response validation
- Form validation
- TypeScript type inference
// Example usage in apps
import { z, UserSchema } from "@workspace/schemas";
// Get inferred type
type User = z.infer<typeof UserSchema>;We welcome contributions from the community! Here's how you can help:
-
Fork the repository
Click the "Fork" button on GitHub to create your own copy.
-
Clone your fork
git clone https://github.com/YOUR_USERNAME/10xcoder.club.git cd 10xcoder.club -
Add upstream remote
git remote add upstream https://github.com/techysiddhant/10xcoder.club.git
-
Create a feature branch
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Make your changes
- Write clean, documented code
- Follow the existing code style
- Add tests if applicable
-
Commit your changes
We use Conventional Commits. Your commit messages should follow this format:
<type>(<scope>): <description> [optional body] [optional footer(s)]Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testschore: Maintenance tasksci: CI/CD changes
Examples:
git commit -m "feat(api): add user authentication endpoint" git commit -m "fix(web): resolve hydration mismatch in header" git commit -m "docs: update README with contribution guidelines"
-
Keep your branch updated
git fetch upstream git rebase upstream/main
-
Push your changes
git push origin feature/your-feature-name
-
Open a Pull Request
- Go to the original repository on GitHub
- Click "New Pull Request"
- Select your fork and branch
- Fill in the PR template with details about your changes
- TypeScript: All code must be written in TypeScript with proper types
- Linting: Run
bun run lintbefore committing - Formatting: Run
bun run formatto format code with Prettier - Type Checking: Run
bun run typecheckto ensure no type errors - Commit Hooks: Husky will automatically run lint-staged and commitlint on commits
- β Title should follow conventional commit format
- β Include a clear description of changes
- β Reference any related issues (e.g., "Fixes #123")
- β Ensure all CI checks pass
- β Request review from maintainers
- β Respond to feedback promptly
Found a bug or have a feature request?
- Check existing issues first
- Open a new issue with:
- Clear, descriptive title
- Steps to reproduce (for bugs)
- Expected vs actual behavior (for bugs)
- Use case and benefits (for features)
- Screenshots if applicable
Build the Docker image from the repository root:
docker build -f apps/server/Dockerfile -t 10xcoder-server:latest .docker run --rm -p 8000:8000 \
-e PORT=8000 \
-e CORS_ORIGIN=http://localhost:3000 \
-e POSTGRES_USER=your_user \
-e POSTGRES_PASSWORD=your_password \
-e POSTGRES_DB=your_database \
-e POSTGRES_HOST=host.docker.internal \
-e POSTGRES_PORT=5432 \
10xcoder-server:latestFor non-Docker production deployments:
bun --cwd apps/server run build
bun --cwd apps/server run startIn your Vercel project settings:
| Setting | Value |
|---|---|
| Root Directory | apps/web |
| Install Command | bun install |
| Build Command | bun run build |
| Output Directory | .next |
Environment Variables:
NEXT_PUBLIC_API_URLβ Your deployed API URL
- Build the Docker image
- Push to a container registry (ECR, Docker Hub, etc.)
- Deploy to your server (EC2, DigitalOcean, etc.)
- Configure reverse proxy (Nginx) for SSL
This project is open source. See the LICENSE file for details.
- Turborepo - Monorepo build system
- Bun - JavaScript runtime
- Next.js - React framework
- Hono - Backend framework
- Shadcn/UI - UI components
- Drizzle ORM - TypeScript ORM
- Zod - Schema validation