MERN Stack — Internship Tasks

Objective, Features, Technologies and tasks to learn MERN Stack fundamentals and practical skills.

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


Technologies

MongoDB Express.js React.js Node.js Docker / Nginx

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
  1. Repository with server code, README and sample requests (Postman collection)
  2. 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
  1. React repo with components, routing, and README
  2. 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
  1. Auth API code and React protected-route demo
  2. 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
  1. docker-compose.yml and Dockerfiles
  2. Deployment notes and public URL if deployed

Suggested duration: 4–6 weeks for full set (can be split into milestones)

How to Submit Your Tasks

  1. 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.
  2. 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.
  3. 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!