RuntimeRiver is a cutting-edge, full-stack developer education platform designed to be the ultimate companion for coding enthusiasts. Built with Next.js 14 and Spring Boot 3, it seamlessly bridges the gap between learning, practicing, and career growth.
"Flow State for Developers"
Powered by Piston API
- Multi-Language Support: Write and execute code in 18+ languages including Java, Python, C++, JavaScript, Go, Rust, and more.
- Real-time Execution: Instant compilation and output generation.
- Standard Input (stdin): Support for interactive programs requiring user input (batch mode).
- Intelligent Editor: Syntax highlighting, auto-completion, and bracket matching via CodeMirror.
- Rich Text Editor: A massive upgrade over standard Markdown, featuring a "Notion-style" block editor (TipTap).
- Media Library:
- Integrated Cloudinary-based image manager.
- Drag-and-drop uploads.
- Role-Based Access: Admins/Editors can manage the library from the dashboard; Authors can access it via the editor.
- Smart Features:
- Auto-generated Table of Contents.
- Reading progress bars.
- Code block highlighting.
- Workflow: Draft -> Review -> Publish lifecycle with role-specific dashboards.
- Dual-Role System: Toggle between Job Seeker and Employer views.
- For Seekers:
- Filter jobs by 20+ categories (Tech & Non-Tech).
- Track application status.
- Direct application submission.
- For Employers:
- Post detailed job listings.
- Manage candidates and applications.
- Dashboard analytics.
A Swiss Army knife for developers, reducing the need to bookmark 50+ websites.
- File Utilities: PDF converters, Image compression, Resizing.
- Code Utilities: JSON Formatter, JWT Debugger, Regex Tester.
- Generators: QR Code, Password, UUID generators.
- Aesthetic: "Runtime River" theme with fluid gradients, glassmorphism, and dark mode support.
- Responsive: Mobile-first design using Tailwind CSS.
- Performance: Server-Side Rendering (SSR) for SEO and lightning-fast loads.
- Framework: Next.js 14 (App Router)
- Language: JavaScript / JSX
- Styling: Tailwind CSS, CSS Modules
- State Management: React Context (Auth, Toast)
- Editor: TipTap (Headless wrapper around ProseMirror), CodeMirror
- Icons: Lucide React
- Deployment: Vercel
- Framework: Spring Boot 3.2
- Language: Java 17
- Database: PostgreSQL
- Security: Spring Security 6, JWT (Stateless Auth)
- Storage: Cloudinary (Image CDN)
- Execution Engine: Piston API (External)
- Build Tool: Maven
- Deployment: Railway
- Node.js: v18+
- Java Development Kit (JDK): v17+
- Maven: v3.8+
- PostgreSQL: Local or Cloud instance
git clone https://github.com/ayaan07alam/Developer-Learning-Platform.git
cd Developer-Learning-PlatformNavigate to the backend directory:
cd backendConfigure Environment Variables:
Create src/main/resources/application.properties based on the example.
# Database
spring.datasource.url=jdbc:postgresql://localhost:5432/runtimeriver
spring.datasource.username=your_postgres_user
spring.datasource.password=your_postgres_password
# Authentication (JWT)
jwt.secret=YOUR_SUPER_SECRET_KEY_AT_LEAST_64_CHARACTERS
jwt.expiration=86400000
# Google OAuth
google.client.id=YOUR_GOOGLE_CLIENT_ID
google.client.secret=YOUR_GOOGLE_CLIENT_SECRET
# Cloudinary (Media Library)
cloudinary.cloud-name=your_cloud_name
cloudinary.api-key=your_api_key
cloudinary.api-secret=your_api_secret
# File Upload Limits
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MBRun the Server:
mvn spring-boot:runServer starts on http://localhost:8080
Navigate to the frontend directory:
cd ../frontendConfigure Environment:
Create .env.local:
NEXT_PUBLIC_API_URL=http://localhost:8080Install & Run:
npm install
npm run devClient starts on http://localhost:3000
| Feature | Admin | Editor | Reviewer | User |
|---|---|---|---|---|
| View Content | ✅ | ✅ | ✅ | ✅ |
| Run Code | ✅ | ✅ | ✅ | ✅ |
| Apply Jobs | ✅ | ✅ | ✅ | ✅ |
| Post Jobs | ✅ | ✅ | ❌ | ❌ |
| Create Posts | ✅ | ✅ | ✅ (Draft) | ❌ |
| Publish Posts | ✅ | ✅ | ❌ | ❌ |
| Media Library | ✅ | ✅ | ❌ | ❌ |
| User Mgmt | ✅ | ❌ | ❌ | ❌ |
We welcome contributions! Please follow these steps:
- Fork the repository.
- Create a feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by Ayaan Alam & The RuntimeRiver Team