ZβArena is a modern, full-stack competitive programming platform supporting the custom Z-- language via my custom compiler and other popular languages via Judge0. It features real-time battles, leaderboards, and a robust challenge system, built for extensibility and developer experience.
- Introduction
- Features
- Directory Structure
- Getting Started
- Configuration & Environment
- Deployment
- Challenge System
- Appwrite Functions
- Security & Compliance
- Troubleshooting & FAQ
- Contributing
- License
- Contact & Support
ZβArena is a next-generation coding competition platform. It enables users to solve, create, and compete in programming challenges across Z--, C++, Python, JavaScript, Rust, and more. Designed for education, hackathons, and developer communities, ZβArena is open-source, cloud-ready, and easy to extend.
- β‘ Multi-language support: Z--, C++, Python, JavaScript, Rust, and more via Judge0
- π§© Challenge system: JSON-based, schema-validated, easy to extend
- π Competitive modes: War (PvP), streaks, leaderboards, achievements
- π Secure & scalable: Appwrite for auth, DB, and real-time; Dockerized backend
- π¨ Modern UI/UX: React 18, Vite, Tailwind CSS, shadcn/ui, Framer Motion
- π οΈ Developer-friendly: TypeScript, modular code, clear API/service layers
- βοΈ Cloud-native: Vercel (client), Render/Docker (server), Appwrite integration
- π¦ Appwrite Functions: Custom backend logic, challenge seeding, leaderboard updates
Z-challenger/
βββ client/ # React frontend (Vite, Tailwind, shadcn/ui)
βββ server/ # Node.js backend API, Z-- compiler integration
βββ compiler/ # Z-- language compiler/runtime
βββ challenges/ # 48+ challenge JSONs, schema
βββ appwrite-functions/ # Appwrite cloud functions (seeder, leaderboard, etc)
βββ docs/ # Architecture, challenge format, diagrams
βββ .github/ # Workflows, issue templates
βββ LICENSE, SECURITY.md, README.md
- Node.js 18+ (Node 20+ recommended for Docker)
- npm or pnpm
- Git
- Appwrite instance (cloud or local) for full features
# Clone the repo
git clone <repo-url>
cd Z-challenger
# Client setup
cd client
npm install
npm run dev
# Visit http://localhost:5173
# Server setup
cd ../server
npm install
npm run dev
# API at http://localhost:3000| Variable | Description |
|---|---|
| VITE_APPWRITE_ENDPOINT | Appwrite API endpoint |
| VITE_APPWRITE_PROJECT_ID | Appwrite project ID |
| VITE_APPWRITE_DATABASE_ID | Appwrite DB ID |
| VITE_APPWRITE_CHALLENGES_COLLECTION_ID | Challenges collection |
| VITE_APPWRITE_SUBMISSIONS_COLLECTION_ID | Submissions collection |
| VITE_APPWRITE_USERS_COLLECTION_ID | Users collection |
| VITE_APPWRITE_STARS_LEVELS_COLLECTION_ID | Stars/levels collection |
| VITE_APPWRITE_ACHIEVEMENTS_COLLECTION_ID | Achievements collection |
| VITE_APPWRITE_LEADERBOARD_COLLECTION_ID | Leaderboard collection |
| VITE_APPWRITE_USER_RANKINGS_COLLECTION_ID | User rankings collection |
| VITE_SERVER_URL | Backend API URL |
| VITE_CLOUDINARY_CLOUD_NAME | Cloudinary cloud name |
| VITE_CLOUDINARY_UPLOAD_PRESET | Cloudinary upload preset |
| Variable | Description |
|---|---|
| PORT | API port |
| JUDGE0_BASE_URI | Judge0 API endpoint |
| RAPID_API_KEY | Judge0 API key |
| COMPILER_PATH | Path to Z-- compiler script |
| CORS_ORIGIN | Allowed origins |
Note: All
VITE_variables must be set in Vercel for production.COMPILER_PATHin Docker/Render must be/app/compiler/src/index.js.
- Import project, set all
VITE_env vars, deploy.
- Use
server/Dockerfile(Node 20, multi-stage, LLVM ready) - Set
COMPILER_PATH=/app/compiler/src/index.jsin env - Deploy and monitor logs for errors
- Deploy from
appwrite-functions/using Appwrite CLI or console - Use
challenge-seeder/to seed challenges
- All challenges are JSON files in
/challenges/(48+ included) - Schema enforced via
/challenges/schema.json - Add new challenges by copying and editing a template
- Use seeder function to upload to Appwrite DB
- Located in
/appwrite-functions/ - Includes: challenge seeder, leaderboard updater, submission processor, etc.
- Each function has its own README/config
- See
SECURITY.mdfor responsible disclosure and security policy - Follows best practices for API security, CORS, and secrets management
- Missing features in production? Ensure all env vars are set in Vercel/Render
- Compiler errors? Set
COMPILER_PATHto/app/compiler/src/index.jsin Docker/Render - Judge0 errors? Check API key and endpoint
- Appwrite issues? Confirm collection IDs and permissions
- More help? See logs, open an issue, or contact support
- Fork, branch, and PR workflow
- Code style: Prettier, ESLint, TypeScript
- Add tests for new features
- See
CONTRIBUTING.md(if present)
MIT Β© ZβArena Contributors
- Open an issue or discussion on GitHub
- For security, see
SECURITY.md - For help, email: support@example.com
ZβArena is open-source and community-driven. Contributions, feedback, and new challenges are always welcome!