A unique competitive coding platform where participants code under restricted visibility conditions. This contest rewards thinking under uncertainty — not perfect code.
- 🌫️ Fog of Code: Only N lines around your cursor are visible - the rest is hidden in fog
- 🔇 Echo Mode: No compiler errors, no runtime errors - only output and test results
- ⏳ Vanishing Code: Lines disappear after a fixed time - code from memory
- Roll Number Entry: No signup required - join with just your roll number
- Time-Bound Contests: Automatic start/end with live countdown
- Real-Time Leaderboard: Track your ranking (hidden during contest if configured)
- Multiple Languages: Python, Java, C, C++ supported
- Puter.js Execution: Client-side sandboxed code execution
- Create and schedule contests
- Upload problems with weighted test cases
- Manual scoring (40 points) for code quality
- View submissions and manage participants
- Node.js 18+ installed
- npm or yarn
# Clone the repository
git clone <repository-url>
cd blind-coding-platform
# Install dependencies
npm install
# Generate Prisma client
npm run db:generate
# Push database schema
npm run db:push
# Start development server
npm run devOpen http://localhost:3000 to view the app.
Create a .env file in the root directory:
# Database (SQLite by default)
DATABASE_URL="file:./dev.db"
# Optional: Socket.IO server URL for real-time features
NEXT_PUBLIC_SOCKET_URL=""src/
├── app/ # Next.js App Router pages
│ ├── admin/ # Admin dashboard
│ ├── api/ # API routes
│ ├── contest/ # Contest pages
│ └── page.tsx # Home page
├── components/ # React components
│ ├── admin/ # Admin components
│ ├── contest/ # Contest components
│ ├── editor/ # Monaco editor & overlays
│ └── leaderboard/ # Leaderboard components
├── hooks/ # Custom React hooks
├── lib/ # Utilities (db, api, scoring)
├── types/ # TypeScript type definitions
└── constants/ # App constants
| Component | Points |
|---|---|
| Automatic (Test Cases) | 60 |
| Manual - Logic | 20 |
| Manual - Structure | 10 |
| Manual - Edge Cases | 10 |
| Total | 100 |
- Compilation Error: -10
- Runtime Error: -5
- Timeout: -10
- Framework: Next.js 14 (App Router)
- Styling: Tailwind CSS
- Database: Prisma + SQLite (can switch to PostgreSQL)
- Editor: Monaco Editor (VS Code engine)
- Execution: Puter.js (client-side sandboxed)
- Real-time: Socket.IO (optional)
- Navigate to
/contest - Enter your Roll Number
- Select an active contest
- Code in the editor with your chosen language
- Submit before time runs out!
- Navigate to
/admin - Create a new contest with blind mode settings
- Add problems and test cases
- Monitor participants and submissions
- Add manual scores after contest ends
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run db:push # Push schema to database
npm run db:studio # Open Prisma Studio
npm run db:generate # Generate Prisma client- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License - see LICENSE file for details.
Built with ❤️ for competitive coding enthusiasts Contributions are welcome! Please submit a pull request or open an issue for any enhancements or bug fixes.
This project is licensed under the MIT License. See the LICENSE file for details.