- The project is divided into two parts
frontend
andbackend
Frontend
is written in modern React, only functional components with hooks.- Developed UI using customizable components of shadcn/ui and added Recoil.js for state management
- Used Vite for optimised build and reduced bundle size
Backend
is written using Typescript utilizing NodeJS and Express- Followed Clean Architecture by Uncle Bob and used SOLID principles
- Used DrizzleORM to query and mutate Postgres DB.
- Deployed into Oracle Cloud Servers using Coolify for self-hosting.
- Install postgreSQL if you don't have it already and create a database named
algoarena
. - Clone the repository
git clone git@github.com:Subrahmanyam-B/online-judge.git
- Create an
.env
files in bothonline-judge/frontend
andonline-judge/backend
folders. - In
online-judge/frontend/.env
add
VITE_API_URL = 'http://localhost:9000'
- In
online-judge/backend/.env
add
DB_URL = 'postgresDB_URL'
REFRESH_TOKEN_SECRET = 'random'
ACCESS_TOKEN_SECRET = 'random'
cd backend && npm i && npm run dev
cd ../frontend && npm i && npm run dev
- App should now be running on
http://localhost:8080/
Fork the repository and create PR if you have done any fixes or improvements. contributing guideines (will be added soon.)