zmts/supra-api-nodejs has 345 GitHub stars and 93 forks. Star changes are not measured yet. Last checked 2026-11-14 02:10 UTC. Last push 2023-03-04.
できること
- Modular RESTful API
- SQL based (PostgreSQL with objection.js)
- Migrations(knex.js)
- Auth (JWT/Access-token/Refresh-token)
計測したスター増加
- 24時間
- 履歴を収集中
- 7日間
- 履歴を収集中
- 15日間
- 履歴を収集中
- 1か月
- 履歴を収集中
期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。
概要
❤️ Node.js REST API boilerplate. Old but still good for references
データREADME.md
オリジナルNode.js API boilerplate
Piece of my thoughts about Node.js architecture.
supra-api-nodejs: A little bit about Node.js RESTful APIs Architecture (RU)
Highlights:
- Modular RESTful API
- ES6 Classes
- Action based
- SQL based (PostgreSQL with objection.js)
- Migrations(knex.js)
- Auth (JWT/Access-token/Refresh-token)
- Cookie support
- Role based access control
- Request validation
- CRUD(users, posts resources)
- Automated API documentation
- Full authentication/authorization and user registration flow implemented
- Tests(e2e)
Key points:
0. Monolith first
Supra-api-nodejs its about monolith first approach. But this does not prevent you from using it in a microservice architecture as well.
1. Controller layer
Each entity have own controller class it slim layer representing resource mapping(routing)
class PostsController extends BaseController {
static get router () {
router.get('/', this.actionRunner(actions.ListAction))
router.get('/:id', this.actionRunner(actions.GetByIdAction))
router.post('/', this.actionRunner(actions.CreateAction))
router.patch('/:id', this.actionRunner(actions.UpdateAction))
router.delete('/:id', this.actionRunner(actions.RemoveAction))
return router
}
}
For example PostsController implements post entity routes. Each route fires own action.
2. Action layer
It's a class encapsulated request validation, permission verification and business logic. One file, one class, one REST operation, one use case.
3. DAO layer
Implement data access methods.
4. Model layer
Represent models schemas and validation rules. There is no other logic only model fields and validation rules.
Development:
Install global dependencies:
npm i -g knex nodemon
Setup database:
- Install PostgreSQL (https://postgresapp.com/downloads.html (for Mac OS))
- Create some DB (https://eggerapps.at/postico/ (for Mac OS))
Go ahead...
cd /supra-api-nodejs
cp .env.example .env- Set required credential in
.env
Run migration to set base SQL schema
knex migrate:latest
Run server
npm run start // prod mode
npm run dev // dev mode
Implemented endpoints:
/auth
| Path | Method | Description |
|---|---|---|
| /auth/login | POST | LoginAction |
| /auth/logout | POST | LogoutAction |
| /auth/refresh-tokens | POST | RefreshTokensAction |
/users
| Path | Method | Description |
|---|---|---|
| /users | GET | ListUsersAction |
| /users/current | GET | GetCurrentUserAction |
| /users/:id | GET | GetUserByIdAction |
| /users | POST | CreateUserAction |
| /users | PATCH | UpdateUserAction |
| /users/:id | DELETE | RemoveUserAction |
| /users/change-password | POST | ChangePasswordAction |
| /users/send-reset-password-email | POST | SendResetPasswordEmailAction |
| /users/reset-password | POST | ResetPasswordAction |
| /users/confirm-registration | POST | ConfirmRegistrationAction |
| /users/change-email | POST | ChangeEmailAction |
| /users/confirm-email | POST | ConfirmEmailAction |
| /users/resend-confirm-new-email-token | POST | ResendConfirmNewEmailTokenAction |
| /users/cancel-email-changing | POST | CancelEmailChangingAction |
/posts
| Path | Method | Description |
|---|---|---|
| /posts | GET | ListPostsAction |
| /posts | POST | CreatePostAction |
| /posts/:id | GET | GetPostByIdAction |
| /posts/:id | PATCH | UpdatePostAction |
| /posts/:id | DELETE | RemovePostAction |
!!! Project still in progress !!!
2017 - 2018 - 2019 - 2020 ...
関連プロジェクトを探す
Asabeneh/30-Days-Of-Python
30 Days of Python プログラミングチャレンジは、Python プログラミング言語を 30 日で学ぶためのステップバイステップのガイドです。このチャレンジは 100 日以上かかることもあります。自分のペースで進めてください。こちらの動画も役立つかもしれません: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,710 スターgrafana/grafana
オープンで組み合わせ可能なオブザーバビリティおよびデータ可視化プラットフォームです。Prometheus、Loki、Elasticsearch、InfluxDB、Postgres など、複数のソースからメトリクス、ログ、トレースを可視化できます。
77,892 スターredis/redis
リアルタイムのデータ駆動型アプリケーションを構築する開発者にとって、Redis は最も選ばれ、最速で、機能が最も豊富なキャッシュ、データ構造サーバー、ドキュメントおよびベクトルクエリエンジンです。
77,490 スターapache/superset
Apache Superset は、データ可視化とデータ探索のためのプラットフォームです。
75,520 スター