Skip to content

Latest commit

 

History

History
84 lines (65 loc) · 2.61 KB

CONTRIBUTING.md

File metadata and controls

84 lines (65 loc) · 2.61 KB

Contributing guidelines

Thanks for considering contribution to this project!

🚀 Getting Started

Pre-requisites:

  • node <= 18 and npm
  • mysql, sqlite or postgres

See Getting Started for standard instructions.

Instead of using Docker, run the server locally and connect to a local MySQL database.

  1. Install all dependencies: npm i
  2. Create a .env file by copying .env.defaults with cp .env.default .env and set the following in .env:
export MYSQL_HOST=127.0.0.1
export MYSQL_PASSWORD=.... # your password
export MYSQL_USER=root
export MYSQL_DATABASE=a12nserver
  1. run make to start the server locally.

🧦 Linting

make fix will run ESLint to fix style issues.

⚙️ Tools and Tech

This project dogfoods @curveball packages built from modern web and HTTP standards.

A non-exhaustive overview of core tools:

Tool Rationale
TypeScript Type safety
Node.js Runtime
Knex Database migrations
Handlebars Lightweight view templating
ESLint Linting
jose JSON Object encryption and signing
bcrypt Password hashing
nodemailer Email dispatch

👀 Whats Inside

.
.gitignore
.env.defaults             default environment variables
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── assets                static files for running in browser (css, js)
├── bin                   scripts for generating JSON schemas and db migration
├── changelog.md
├── _dist                 built output of type definitions
├── docs
├── eslint.config.mjs
├── _node_modules
├── package-lock.json
├── package.json
├── schemas
├── src                   All source code including endpoint controllers and types
├── templates             HTML view templates created with Handlebars
├── test                  unit/integration tests
└── tsconfig.json

Pick an issue 🏷️

Check out the tagged Issues list and labels. The issues require different skill levels, so for your first issue, pick something you're comfortable with.