MEAN Stack with Docker

A full-stack TypeScript contact management application with comprehensive Docker integration.

Get Started View on GitHub


Contacts List

A modern, full-stack TypeScript contact management system built with the MEAN stack (MongoDB, Express.js, Angular, Node.js) and containerized with Docker. Perfect for learning full-stack development or as a starting point for your own projects!

๐ŸŒŸ What Youโ€™ll Learn

  • TypeScript throughout the entire stack
  • Angular 19 with reactive forms, guards, and SSR
  • Express.js with TypeScript for a robust API
  • MongoDB integration with Mongoose
  • JWT Authentication for secure user management
  • Docker containerization for development and production
  • Nginx as a load balancer and API gateway
  • CI/CD with GitHub Actions

๐Ÿš€ Getting Started in 30 Seconds

Prerequisites

Quick Start Commands

Clone the repository:

git clone https://github.com/nitin27may/mean-docker.git

Navigate to project folder:

cd mean-docker

Create environment file:

cp .env.example .env

Start the application:

docker-compose -f docker-compose.nginx.yml up

Thatโ€™s it! Visit http://localhost in your browser.

Login with:

  • Username: nitin27may@gmail.com
  • Password: P@ssword#321

๐Ÿ—๏ธ System Architecture

Architecture Diagram

Single Entry Point Architecture

When using the docker-compose.nginx.yml configuration, all traffic flows through a single port (80):

  • Single Exposed Port: Only port 80 is exposed to the outside world
  • Unified Access Point: Both UI and API requests enter through Nginx
  • Intelligent Routing:
    • Requests to /api/* are proxied to the Express.js service
    • All other requests are served by the Angular frontend
  • Simplified Deployment: No need to manage multiple public endpoints
  • Enhanced Security: Internal services remain isolated from direct external access

๐Ÿ’ป Key Features

User Authentication

Login Screen

  • JWT-based secure login and registration
  • Protected routes with Angular guards
  • Token-based API authorization
  • Password change functionality

Contact Management

  • Create, read, update, and delete contacts
  • Responsive design for mobile and desktop
  • Form validation with custom error messages
  • Search, sort, and paginate contacts

๐Ÿ“š Documentation

For more detailed information, explore these documentation pages:

๐Ÿค Contributing

We welcome contributions!

If youโ€™d like to contribute to this project:

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.