Skip to content

HackYourFutureBelgium/bf-back-end-template

Repository files navigation

Project Overview

This project serves as a backend template for a Node.js application without a database. It is organized into several key directories and files, each with a specific role. Below is a detailed explanation of the structure and the purpose of each component within the project.

Note

Please go to .gitignore and uncomment .env, logs and .vscode, because those Must be included in .gitignore.

Project Structure

Project/
|-- config/
|   ├── db.js           # Database configuration
|-- controllers/
|   ├── user.js       
|-- middleware/
|   ├── createLog.js  
|-- models/
|   ├── user.js          # Defines user schema for MySQL
|-- routes/
|   ├── user.js         # Routes for user-related endpoints
|-- utils/
|   ├── matchPasswords.js    # Utility to compare passwords
|   ├── validateEmail.js     # Utility to validate email format
|   ├── validatePasswords.js # Utility to validate password complexity
|-- views/
|   |--- 404.ejs
|-- .env              # Environment variables configuration
|-- index.js          # Entry point of the application
|-- package.json      # Dependencies and scripts
|-- README.md         # This file

Directory and File Descriptions

config/

  • db.js: Contains the database configuration. Although no database is included in this template, this file would typically contain connection settings for a database like MySQL.

controllers/

  • user.js: Manages user-related logic. This file would handle the logic for user operations such as creating, updating, and deleting user information.

middleware/

  • createLog.js: Middleware to create logs. This file would contain functions to log requests and other activities, useful for debugging and monitoring.

models/

  • user.js: Defines the user schema for MySQL. This file would define the structure of user data if a database were used, including fields and data types.

routes/

  • user.js: Routes for user-related endpoints. This file would define the endpoints for user-related operations, mapping HTTP methods to controller functions.

utils/

  • matchPasswords.js: Utility to compare passwords. Contains functions to compare hashed passwords, essential for authentication processes.
  • validateEmail.js: Utility to validate email format. Provides a function to ensure email addresses meet a standard format.
  • validatePasswords.js: Utility to validate password complexity. Includes a function to check that passwords meet certain complexity requirements (e.g., length, character types).

views/

  • 404.ejs: Template for 404 error page. This file would be used to render a user-friendly 404 error page when a route is not found.

Project Root Files

  • .babelrc: Babel configuration for ES6 support. This file configures Babel to transpile ES6+ JavaScript to ES5, ensuring compatibility across environments.
  • .env: Environment variables configuration. This file holds configuration values that are environment-specific, such as API keys and port numbers.
  • index.js: Entry point of the application. This file initializes the server and sets up middleware, routes, and error handling.
  • package.json: Dependencies and scripts. This file lists project dependencies and defines scripts for running and managing the application.
  • README.md: This file. Provides an overview of the project structure and purpose.

Getting Started

To set up and run this project, follow these steps:

  1. Install Dependencies

    npm install
  2. Create a .env File Create a .env file in the root directory and add the necessary environment variables. For example:

    PORT=5002
  3. Run the Application

    npm run dev

Additional Information

Babel Configuration

The .babelrc file ensures that modern JavaScript syntax can be used in the project. It typically includes presets like @babel/preset-env to transpile ES6+ code to ES5.

Environment Variables

The .env file is critical for configuring the application based on different environments (development, testing, production). Ensure that sensitive information like API keys and passwords are kept out of version control by using this file.

Middleware Usage

Middleware like createLog.js can be used to enhance the application by adding features such as logging, authentication, and error handling. These are typically added to the main application in index.js.

Utility Functions

Utility functions in the utils/ directory are reusable pieces of code that can be used across the application to perform common tasks, such as password validation and email format checking.