Navy's framework for Node.js webservers
Go to file Use this template
2022-11-13 21:12:50 +02:00
files comments & small fixes 2022-11-12 22:19:27 +02:00
src login/logout + some middleware stuff 2022-11-13 21:12:50 +02:00
.eslintrc.json meta files 2022-11-06 19:36:13 +02:00
.gitignore meta files 2022-11-06 19:36:13 +02:00
example.env example env 2022-11-13 21:10:00 +02:00
index.js meta files 2022-11-09 11:23:54 +02:00
LICENSE meta files 2022-11-09 11:23:54 +02:00
options.json reference servefiles 2022-11-10 16:14:02 +02:00
package.json meta files 2022-11-11 21:34:33 +02:00
README.md comments & small fixes 2022-11-12 22:19:27 +02:00
yarn.lock meta files 2022-11-11 21:34:33 +02:00

Navy's webserver framework

A template repository for creating Node.js based webservers with sharding.
Main repository: https://git.corgi.wtf/Navy.gif/webserver-framework

Technologies

  • Argon2
  • Express
  • Passport & related strategies (2FA support)
  • MongoDB & MariaDB

How to

Using the template

  • Clone the repository git clone https://git.corgi.wtf/Navy.gif/webserver-framework <project name>
  • Change the original remote name to git remote rename origin upstream.
  • Disable pushing to the upstream remote git remote set-url --push upstream no_push.
  • Add your own remote git remote add <remote name> <repository url>

Fetching the upstream changes

  • Fetch the the remotes git fetch.
  • Preview the changes git log -p HEAD..upstream/master
  • Merge changes to the current branch git merge upstream/master.

Main components

Controller: /src/controller/Controller.js
Master process, orchestrates the whole program. Takes care of starting up the shards and communication with them.

Shard.js: /src/controller/Shard.js
Manages the forked processes. Essentially a wrapper for ChildProcess.

Server.js: /src/server/Server.js
Main component that runs on the forked processes. Expects a message with a _start property with the startup options to be sent.

"Lesser" components

Authenticator: /src/server/middleware/Authenticator.js
Takes care of sessions, authentication and authorisation, relies on an implementation of AbstractUserDatabase.js.

UserDatabase: /src/server/components/UserDatabase.js
Implementation of AbstractUserDatabase.js, takes care of user management.