Back to Browse

Content Broadcasting Backend Project | Interview Assignment Project |

31 views
Apr 30, 2026
4:29

A backend system for educational content distribution β€” teachers upload subject content, principals approve it, and students access live content via public APIs. ## πŸ›  Tech Stack - **Runtime**: Node.js - **Framework**: Express.js - **Database**: MySQL - **Auth**: JWT + bcrypt - **File Upload**: Multer (local storage by default, S3 if configured) / cloudinary storage - **Rate Limiting**: express-rate-limit ## πŸ“ Project Structure ``` src/ β”œβ”€β”€ app.js # Entry point β”œβ”€β”€ config/ β”‚ β”œβ”€β”€ db.js # PostgreSQL pool β”‚ └── storage.js # S3 or local multer config β”œβ”€β”€ controllers/ β”‚ β”œβ”€β”€ auth.controller.js # Register, login β”‚ β”œβ”€β”€ content.controller.js # Upload, approve, reject β”‚ └── broadcast.controller.js # Public live content β”œβ”€β”€ middlewares/ β”‚ β”œβ”€β”€ auth.middleware.js # JWT + RBAC β”‚ └── error.middleware.js # Error handler β”œβ”€β”€ routes/ β”‚ β”œβ”€β”€ auth.routes.js β”‚ β”œβ”€β”€ content.routes.js β”‚ └── broadcast.routes.js β”œβ”€β”€ services/ β”‚ └── scheduling.service.js # Rotation algorithm └── utils/ β”œβ”€β”€ migrate.js # DB table creation └── seed.js # Demo data ``` ## πŸ“ Assumptions - `start_time` and `end_time` must both be provided (or neither) β€” content without a time window is never shown - Times are stored and compared in UTC - The rotation clock resets daily at midnight UTC for simplicity - Content can only go from `pending` β†’ `approved` or `pending` β†’ `rejected` (no re-approval) - Subjects are stored in lowercase for consistent matching

Download

0 formats

No download links available.

Content Broadcasting Backend Project | Interview Assignment Project | | NatokHD