Skip to content

A visually captivating and user-friendly authentication system, powered by Express and MongoDB, with JavaScript, HTML, and SCSS technologies, tailored as the official site of the spartan army.

Notifications You must be signed in to change notification settings

Afek-Sakaju/sparta-war-room

Repository files navigation

Sparta War Room

This project employs a NodeJS Express server written in TypeScript and utilizes MongoDB for server-side development.
On the client side, JavaScript, HTML, and SCSS are used.
The design draws inspiration from the spirit of Sparta, aiming to function as the official website of the Spartan warriors, contributing a creative and unique aspect to the project.


This project utilizes a database to store data and provides access to it through REST APIs and MIGRATIONS.
The APIs are written in NodeJS and typescript, using the express framework with typescript.

The project incorporates the following APIs:

Users data and authentication Announcements data Tactics data
+ Register + Get all announcements data + Get all tactics data
+ Login
+ Logout

Requirements

  • NodeJS version 16.4+
  • MongoDB service version 6.0.1+

Command lines

  • npm install
    Install all the necessary packages for running and developing the server-side.

  • npm run start
    Build the TS code and execute the compiled JS project.

  • npm run dev-with-migrations
    This command triggers the migration process, initializing the database with essential data to showcase the project's functionality. It subsequently launches TS code using nodemon for a smooth and uninterrupted development experience.

  • npm run dev
    Run TS code with nodemon for seamless development

  • cd-client
    Access the client directory to initiate client-side development.

    • npm install
      Install all the necessary packages for running and developing the client-side.
    • npm run sass-compile
      Compile all the SCSS files to CSS files.
    • npm run sass-watch-folder
      Automatically compiles SCSS files into CSS files whenever changes are detected.

A practical example that exemplifies how the project can be utilized

Short-Demo.mp4

The technologies used in this project include:

  • Nodejs : the project is javascript based.
  • Express : used for the server side routers, middlewares, controllers, and services.
  • Typescript : the project has been implemented using typescript interfaces.
  • jwt : implementing authentication using JSON Web Tokens involves securely storing the token for the authenticated user.
  • MongoDB : utilized with the mongoose library for defining schemas and models, which are then utilized in the controllers and services.
  • mongo-migrate : the migrations ensure that the MongoDB handle important database initializations before running, including announcements creation and Tactics data.
  • Bcrypt : user passwords are securely encrypted in accordance with best practices to ensure data security.
  • JavaScript : javascript script files enable interactive behavior in web pages by handling user interactions on elements.
  • HTML : the project extensively relies on HTML for constructing and defining its web page elements.
  • SCSS : the project's visual style is elegantly crafted and designed using scss.

Additional technologies used as development tools include:

  • ESLINT : the project adheres to the ESLint guidelines and follows the best practices recommended by airbnb.
  • nodemon : watches for typescript file changes and compiles them in real-time.

In addition, the project incorporates the following features:

  • mongoose schema hooks : incorporates a pre-save hook that encrypts the user's password before creating a new user.
  • status code : HTTP request responses return the appropriate and correct status codes.
  • postman : postman collection for simplified testing and interaction with the project's APIs :
    sparta-war-room.postman_collection.json
  • Best-Practices in Structure and Naming: : The application adheres to Best-Practices organization and structuring of the folders and files, improving maintainability and promoting a standardized development process. It also maintains superior naming conventions throughout all the files for code clarity and consistency.
  • Responsiveness: The application is intentionally designed to adapt to screens of various sizes by utilizing media queries within its components. This ensures that the user interface adjusts seamlessly to different screen dimensions.

A brief illustration showcasing how the app appears on various screens

Short-Demo-MQ.mp4

Author

:octocat: Afek Sakaju

About

A visually captivating and user-friendly authentication system, powered by Express and MongoDB, with JavaScript, HTML, and SCSS technologies, tailored as the official site of the spartan army.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published