{"id":22726888,"url":"https://github.com/albertobasalo/proton","last_synced_at":"2026-04-15T15:37:07.468Z","repository":{"id":54304125,"uuid":"327879412","full_name":"AlbertoBasalo/proton","owner":"AlbertoBasalo","description":"Boilerplate for Express API services coded with TypeScript","archived":false,"fork":false,"pushed_at":"2022-03-29T07:43:48.000Z","size":3166,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-05T01:48:43.531Z","etag":null,"topics":["api","boilerplate","express","mongodb","typescript"],"latest_commit_sha":null,"homepage":"https://proton-angular-builders.herokuapp.com/v1/test","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlbertoBasalo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-08T11:07:24.000Z","updated_at":"2024-10-16T10:21:21.000Z","dependencies_parsed_at":"2022-08-13T11:30:50.336Z","dependency_job_id":null,"html_url":"https://github.com/AlbertoBasalo/proton","commit_stats":null,"previous_names":[],"tags_count":20,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlbertoBasalo%2Fproton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlbertoBasalo%2Fproton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlbertoBasalo%2Fproton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlbertoBasalo%2Fproton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlbertoBasalo","download_url":"https://codeload.github.com/AlbertoBasalo/proton/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246258873,"owners_count":20748573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","boilerplate","express","mongodb","typescript"],"created_at":"2024-12-10T17:07:19.282Z","updated_at":"2026-04-15T15:37:02.425Z","avatar_url":"https://github.com/AlbertoBasalo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# proton\n\nPROfessional Typescript bOilerplate with Node and express\n\n\u003e Clone, fork or use as a template repository for creating your next **Node TypeScript** project.\n\n```terminal\ngit clone https://github.com/AtomicBuilders/proton/ your-project\ncd your-project\nnpm install\n```\n\n#### Based on [_quark_: fundamental Typescript boilerplate](https://github.com/AtomicBuilders/quark/)\n\n## 🎯 Motivation\n\nCreate an Express application, but not from scratch.\n\nHave a template to create _TypeScript_ APIs with an application already configurated.\n\nA **boilerplate** ready to apply clean code techniques and testing.\n\n\n## 🎩 Features\n\n### 🏁 Setup\n\n#### Configuration\n#### Logging\n#### Error Handling\n\n### 🔀 Routing\n\n#### OpenApi Swagger\n#### Middleware\n#### Uniform response\n#### Error handling\n\n### 🔀 Data Repositories\n\n#### Controller and repositories\n#### In Memory\n#### MongoDB (no mongoose nor other ORM)\n#### Static typed with generics\n\n\n## ⚙ Workflows\n\n### 👨‍💻 Dev Workflow\n\nWhile developing, make sure to install the recommended extensions for a better dev experience.\n\n#### Testing\n\nRun `npm run test:watch` it will run test after each change. Ideal for TDD or testing just in time.\n\n#### Running\n\nTo run your code without having to build it just execute `npm run dev`\n\n#### Updating\n\nTo keep your dependencies up to date use `npm run updates` and it will check for updates. Then cherry pick what you want to update.\n\n### 🚚 Deploy Workflow\n\n#### Testing\n\nRun `npm run test` it will run all test once and stops. Default for CI/CD most common environments.\n\nIf you want also the coverage report then use `npm run test:coverage` .\n\n#### Publish\n\nIf you want to publish your work as a package or simply want to keep track of your releases, then there is a script for you: `npm run release`. It will:\n\n- update the version number\n- update the change log file.\n- push and tag changes\n\n#### Build and run\n\nThe standard `npm start` will run de build process before, so you can deploy the source code alone.\n\nThis way you can automate the deployment with the former release script.\n\n### 🤖 Scripts\n\nHere you have a recap of the available scripts\n\n```json\n  \"scripts\": {\n    \"start\": \"node ./dist/main.js\",\n    \"prestart\": \"npm run build\",\n    \"build\": \"tsc\",\n    \"dev\": \"ts-node ./src/main.ts\",\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch --verbose\",\n    \"test:coverage\": \"jest --coverage\",\n    \"format\": \"prettier --write \\\"./**/*.{ts,json}\\\"\",\n    \"lint\": \"eslint src --ext .ts\",\n    \"lint:fix\": \"npm run lint -- --fix\",\n    \"prerelease\": \"standard-version \",\n    \"release\": \"git push --follow-tags origin master\",\n    \"updates\": \"ncu -u\"\n  }\n```\n\n## 🛠 Tools\n\n### 📋  GitHub Issues\n\nUse GitHub issues for tracking _User Stories_ and _developer tasks_.\n\n- Each issue may be labeled with\n  - categories: feature, bug, test, refactor, dependencies, chore\n  - priorities: must, should, could, wont [MoSCoW priority](https://en.wikipedia.org/wiki/MoSCoW_method)\n  - milestones: may be epics or releases\n  - project: a Kanban automated dashboard to track issue workflow\n\n\u003e More info in Spanish at [GitHub Projects and Tools](https://www.notion.so/albr/GitHub-Projects-and-Tools-59f285b78acf4ff9b84076c526bafc03)\n\n### 📦 Commits and release\n\n- Use [standard-version](https://www.npmjs.com/package/standard-version) to produce a changelog file from [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)\n\n### 💅 Code style with Prettier\n\n- Installed and configured prettier\n\n\u003e Recommended [prettier extension](https://github.com/prettier/prettier-vscode)\n\n\n### 📐 Code linting with esLint\n\n- Installed and configured eslint to work with prettier\n\n\u003e Recommended [esLint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)\n\n### 🧪 Code tested with Jest\n\n- Installed and configured **jest** to run specs\n- Configured to conform with **eslint**\n- Uses `ts-jest` to work natively with **TypeScript**\n\n\u003e Use this snippets `.vscode\\js-snippets.json` as an inspiration to create yours\n\n\n### 🧩 VS Code Extensions\n\nRecommendations\n\n- [Auto Rename Tag](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag)\n- [Bracket Pair Colorizer 2](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2)\n- [Better Comments](https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments)\n- [Debugger for Chrome](https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome)\n- [Editor Config](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig)\n- [EsLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)\n- [GitHub Pull Requests and Issues](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github)\n- [html tag wrapper](https://marketplace.visualstudio.com/items?itemName=hwencc.html-tag-wrapper)\n- [Material Icon Theme](https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme)\n- [JavaScript Booster](https://marketplace.visualstudio.com/items?itemName=sburg.vscode-javascript-booster)\n- [JavaScript (ES6) code snippets](https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets)\n- [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)\n- [npm Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense)\n- [OpenAPI (Swagger) Editor](https://marketplace.visualstudio.com/items?itemName=42crunch.vscode-openapi)\n- [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense)\n- [Peacock](https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock)\n- [Prettier](https://github.com/prettier/prettier-vscode)\n- [Spell Right](https://marketplace.visualstudio.com/items?itemName=ban.spellright)\n- [Visual Studio IntelliCode](https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode)\n\n\n### 👽 Extra\n\n#### 🔧 Settings and Snippets\n\n\u003e See User and WorkSpace configurations at `.vscode` folder as an inspiration for yours\n\u003e See also `.vscode\\ts-snippets.json` to use in your TypeScript snippets for easy testing\n\n#### ⌨ VS Code Shortcuts\n\nTOP 10\n\n- `F1` :command list\n- `CTRL+P` : file\n- `CTRL+T` : search code\n- `CTRL+K CTRL+Z` : code comment\n- `CTRL+K CTRL+U` : uncomment code\n- `F12` : go to definition\n- `CTRL+Ñ` : show hide terminal\n- `CTRL+B`: show hide navigation bar\n- `CTRL+K S` : save al files\n- `ALT+up|dawn` : move line\n\n## 👨 Created by Alberto Basalo\n\n[@albertobasalo](https://twitter.com/albertobasalo)\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbertobasalo%2Fproton","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falbertobasalo%2Fproton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbertobasalo%2Fproton/lists"}