express-objection-starter icon indicating copy to clipboard operation
express-objection-starter copied to clipboard

an opinionated, production-ready, isomorphic express/knex/objection starter with centralized configuration

Welcome to express-objection-starter (WIP) 👋

GitHub Actions Coverage Maintainability Dependencies devDependencies Vulnerabilities Dependabot Status License Surge Docs Netlify Docs Standard Prettier Deploy to Heroku

an opinionated, production-ready, isomorphic express/knex/objection starter with centralized configuration

🏠 Homepage

Why?

While node.js makes it easy to hack together an express server quickly, it's hard to actually build a production-ready, secure, scalable solution. Furthermore, when building a web app that has a backend and a frontend component, you end up having to repeat almost all of the logic.

Thus, based on my experience building production-level systems, I built a comprehensive express.js template with:

  • a centralized hierarchical configuration system that can be easily overwritten
  • sensible defaults that can suit any production environment - PaaS, containers, behind proxy/CDN, etc, with support for production logging and distributed tracing
  • a proper ORM and query builder (Objection.js + knex) to allow working with relational databases in an ergonomic way without resulting in N+1
  • extensible relational models with tons of features (e.g. validation and pagination) baked-in
  • secure authentication system with Active Session management features
  • fine-grained role-based authorization to control access down to the field level, that seamlessly integrates with the query builder
  • a fast, distributed, fault-tolerant, class-based, and (optionally) rate-limited queuing system that takes advantage of multi-core CPUs
  • fully-loaded development environment with automated testing/migration/dependencies/linting via git & npm hooks, development-purpose mail server, and even automatic type generation!
  • a scalable process model (both for the server and the worker) that is easy to maintain once in production
  • easy & mobile-optimized email templating w/ a custom MJML -> hbs -> node solution

Install

When you create a GitHub repo, you can either select express-objection-starter as the starting template, or you can start by cloning this repo:

git clone https://github.com/JaneJeon/express-objection-starter.git
rm -rf .git

Run tests

yarn test

Author

👤 Jane Jeon

🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page.

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2019 Jane Jeon.
This project is MIT licensed.