Skip to the content.

[![Open Issues](https://img.shields.io/github/issues/code-monk08/entry-management?style=for-the-badge)](https://github.com/code-monk08/entry-management/issues) [![Forks](https://img.shields.io/github/forks/code-monk08/entry-management?style=for-the-badge)](https://github.com/code-monk08/entry-management/network/members) [![Stars](https://img.shields.io/github/stars/code-monk08/entry-management?style=for-the-badge)](https://github.com/code-monk08/entry-management/stargazers) ![Maintained](https://img.shields.io/maintenance/yes/2024?style=for-the-badge&logo=github) ![Made with Node.js](https://img.shields.io/badge/Made%20with-Nodejs-blueviolet?style=for-the-badge&logo=node) ![Open Source Love](https://img.shields.io/badge/Open%20Source-%E2%99%A5-red?style=for-the-badge&logo=open-source-initiative) ![Built with Love](https://img.shields.io/badge/Built%20With-%E2%99%A5-critical?style=for-the-badge&logo=ko-fi) [![Telegram/codemonk08](https://img.shields.io/badge/Telegram-Chat-informational?style=for-the-badge&logo=telegram)](https://telegram.me/codemonk08)

Table of Contents

About

Ingress is an easy-to-use MVP (Minimum Viable Product) for entry management. It was built using Node.js and MongoDB database with Mongoose ODM. The application uses EJS (Embedded JavaScript templates) for server-side rendering and supports sending emails and SMS notifications using the Nodemailer module and Nexmo API, respectively.

This project was implemented as a submission for the summergeeks 2020 internship challenge by Innovacer. It meets all the criteria mentioned in the assignment provided by summergeeks.

Features

Tech Stack

Installation

  1. Clone the repository:
    git clone https://github.com/code-monk08/entry-management.git
    cd entry-management
    
  2. Install dependencies:
    npm install
    
  3. Set up environment variables: Create a .env file in the root directory and add the following variables:
    PORT=5000
    SECRET=your_secret_key
    EMAIL=your_email@gmail.com
    PASSWORD=your_email_password
    NEXMOAPIKEY=your_nexmo_api_key
    NEXMOAPISECRET=your_nexmo_api_secret
    
  4. Start MongoDB:
    mongod
    
  5. Run the application:
    npm start
    

Usage

  1. Open your browser and navigate to http://localhost:5000
  2. Register as a new host or login if you already have an account
  3. Use the dashboard to add visitors and manage check-ins/check-outs

Project Structure

.
β”œβ”€β”€ app.js                 # Main application file
β”œβ”€β”€ config/                # Configuration files
β”‚   β”œβ”€β”€ auth.js            # Authentication middleware
β”‚   β”œβ”€β”€ keys.js            # Database configuration
β”‚   └── passport.js        # Passport.js configuration
β”œβ”€β”€ models/                # Database models
β”‚   β”œβ”€β”€ Host.js            # Host model
β”‚   └── Visitor.js         # Visitor model
β”œβ”€β”€ routes/                # Route handlers
β”‚   β”œβ”€β”€ hosts.js           # Host-related routes
β”‚   └── index.js           # Main routes
β”œβ”€β”€ views/                 # EJS templates
β”‚   β”œβ”€β”€ dashboard.ejs      # Dashboard view
β”‚   β”œβ”€β”€ layout.ejs         # Main layout
β”‚   β”œβ”€β”€ login.ejs          # Login view
β”‚   β”œβ”€β”€ register.ejs       # Registration view
β”‚   β”œβ”€β”€ welcome.ejs        # Welcome page
β”‚   └── partials/          # Partial views
β”‚       └── messages.ejs   # Flash messages partial
β”œβ”€β”€ public/                # Static files
β”‚   └── styles/            # CSS files
β”œβ”€β”€ .env                   # Environment variables
β”œβ”€β”€ package.json           # Project dependencies
└── README.md              # Project documentation

API Endpoints

Environment Variables

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a pull request

Please make sure to update tests as appropriate and adhere to the Code of Conduct.

License

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


For any questions or support, please open an issue or contact the maintainer.