Objective
Teach interns how to build full-stack JavaScript applications using MongoDB (database), Express (server), React (frontend) and Node.js (runtime). Focus on REST APIs, client-server communication, authentication, state management, and deployment.
Features
- End-to-end JavaScript stack (client + server + DB)
- RESTful API design, CRUD operations
- Authentication & authorization (JWT)
- Frontend state management and routing (React + Router)
- Containerization and deployment (Docker)
Technologies
Tasks (4)
Goal
Create a CRUD API for a resource (e.g., products or tasks) with MongoDB as storage.
Requirements
- Endpoints: GET (list, single), POST, PUT/PATCH, DELETE
- Use Mongoose schemas & validation
- Include error handling and basic logging
Deliverables
- Repository with server code, README and sample requests (Postman collection)
- Sample .env.example showing required env vars (no secrets)
Goal
Build a React single-page app that consumes the REST API and provides UI to create/read/update/delete resources.
Requirements
- React (functional components + hooks)
- React Router for navigation
- Use fetch/axios to call API, show loading & errors
Deliverables
- React repo with components, routing, and README
- Live screenshots or short demo GIF
Goal
Add signup/login flow with hashed passwords and JWT-based protected endpoints and client routes.
Requirements
- Hash passwords securely (bcrypt)
- Issue JWTs and verify on protected API routes
- Frontend: login form, token storage (httpOnly cookie recommended) and protected pages
Deliverables
- Auth API code and React protected-route demo
- Short security notes (where to store tokens, common pitfalls)
Goal
Containerize the backend, frontend and use a MongoDB container, then deploy locally via docker-compose or to a cloud provider.
Requirements
- Dockerfiles for server and client
- docker-compose.yml that starts client, server, and mongo
- Optional: Nginx as reverse-proxy and instructions for cloud deploy (Heroku / DigitalOcean / AWS)
Deliverables
- docker-compose.yml and Dockerfiles
- Deployment notes and public URL if deployed
How to Submit Your Tasks
-
For each task:
- Create a separate document (DOC, DOCX, or PDF) for each task (Task 1, Task 2, Task 3, Task 4).
- Add all required screenshots, code snippets, commands, and links as per the deliverables.
-
Upload your documents:
- Upload each task document to Google Drive or GitHub (create a public repository or shareable folder).
- Make sure the sharing permissions allow anyone with the link to view your files.
-
Submit your links:
- Copy the public links for each task document.
- Go to the Task Submission page.
- Paste your document links in the submission form, clearly mentioning the task number for each link.
Tip: Organize your files and links clearly for faster review and feedback!