A monorepo project that consolidates key internal tools for Scaler School of Technology into a single platform, including:
- π Hostel Management
- π½οΈ Mess Management
- π» E-Learning Hub
This project uses a scalable Monorepo structure with Turborepo, a clean MVC architecture for the backend, and React + Vite for the frontend.
SST_Internal-Tools/
βββ apps/ # All runnable apps go here
β βββ backend/ # Node.js + Express backend (MVC)
β β βββ controllers/ # Handle request logic (e.g., userController.js)
β β βββ models/ # DB models/schema definitions
β β βββ routes/ # Express routes (e.g., userRoutes.js)
β β βββ services/ # Business logic (used by controllers)
β β βββ middlewares/ # Reusable middleware (e.g., authMiddleware.js)
β β βββ config/ # DB connection, environment setup
β β βββ utils/ # Helper utilities (e.g., token, logger)
β β βββ app.js # Express app setup
β β βββ server.js # Entry point to start the server
β β
β βββ web/ # React frontend (Vite)
β βββ public/ # Static files (favicon, etc.)
β βββ src/
β β βββ components/ # Reusable UI components (e.g., Button, Card)
β β βββ pages/ # Page-level views (Home.jsx, Dashboard.jsx)
β β βββ routes/ # React Router config
β β βββ services/ # API services (e.g., axios instances)
β β βββ utils/ # Frontend utilities (formatters, validators)
β β βββ App.jsx # Main App entry
β β βββ main.jsx # React DOM renderer
β βββ index.html
β βββ vite.config.js
β
βββ packages/ # Shared code across apps
β βββ ui/ # (Optional) Shared design system (Button, Modal, etc.)
β βββ auth/ # (Optional) Auth-related logic (JWT handling, roles)
β βββ config/ # (Optional) Shared config like tailwind, eslint, etc.
β βββ utils/ # (Optional) Shared utilities (validators, date utils, etc.)
β
βββ .env.example # Example environment file for setup
βββ .gitignore # Ignore node_modules, .env, etc.
βββ package.json # Root-level scripts and workspace definition
βββ turbo.json # Turborepo pipeline config
βββ README.md # Project overview and usage
- controllers/ β Handle HTTP requests and call services
- models/ β Define your data structure (with Mongoose, Sequelize, Prisma, etc.)
- routes/ β API endpoints (e.g.,
/auth,/students,/hostel) - services/ β Business logic, often reusable by multiple controllers
- middlewares/ β e.g., authentication, error handling, validation
- config/ β Database setup, third-party configs
- utils/ β Custom logger, token handler, etc.
- app.js β Sets up Express app and middleware
- server.js β Boots up the server
- components/ β Reusable UI blocks like
<Button />,<Navbar /> - pages/ β Route-linked views like
Dashboard,LeaveForm - routes/ β React Router setup with layout wrappers
- services/ β Axios instance, API call logic
- utils/ β Any helper functions
- main.jsx / App.jsx β App setup with router and layout
- ui/ β Shared design components (used in web + admin panels)
- auth/ β Shared auth utilities (JWT decode, protected routes, role guards)
- config/ β Tailwind config, tsconfig, eslint settings
{
"private": true,
"workspaces": ["apps/*", "packages/*"],
"scripts": {
"dev": "turbo run dev --parallel",
"build": "turbo run build",
"lint": "turbo run lint"
},
"devDependencies": {
"turbo": "^1.12.0"
}
}{
"$schema": "https://turborepo.org/schema.json",
"pipeline": {
"dev": {
"cache": false,
"persistent": true
},
"build": {
"outputs": ["dist/**"]
},
"lint": {}
}
}git clone https://github.com/Scaler-Innovation-Labs/SST_Internal-Tools.git
cd SST_Internal-Toolsnpm installThis installs dependencies across all apps using Turborepo workspaces.
Create a .env file at the root or per app as needed.
cp .env.example .envFill in your variables (e.g., DB connection, JWT secret, Firebase keys, etc.)
PORT=8000
DATABASE_URL=postgres://...
JWT_SECRET=your_jwtnpm run devThis will run both the frontend and backend in parallel using Turborepo.
npm run dev # Run all apps in dev mode
npm run build # Build all apps
npm run lint # Lint all apps- Auth system (OAuth + JWT + RBAC)
- Shared UI package (
packages/ui) - Central notification service
- Database ORM setup (Prisma or Mongoose)
- CI/CD with GitHub Actions
- Fork the repo
- Create your feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m "Add some feature" - Push to the branch:
git push origin feature/my-feature - Open a pull request
MIT Β© Scaler Innovation Labs
Feature details will be brainstormed collaboratively by students in the Innovation Lab. More details to follow soon!