{"id":39103163,"url":"https://github.com/sanurb/express-typescript-skeleton","last_synced_at":"2026-01-17T19:16:44.563Z","repository":{"id":291862249,"uuid":"976169281","full_name":"sanurb/express-typescript-skeleton","owner":"sanurb","description":"Template to start developing a REST API with Node.js (Express), TypeScript","archived":false,"fork":false,"pushed_at":"2026-01-11T00:26:57.000Z","size":346,"stargazers_count":0,"open_issues_count":11,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-11T08:23:22.554Z","etag":null,"topics":["backend","best-practices","express","nodejs"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sanurb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-05-01T16:13:23.000Z","updated_at":"2025-09-11T18:34:13.000Z","dependencies_parsed_at":"2025-06-07T03:25:15.371Z","dependency_job_id":"70931c59-bbaa-4d65-bfa7-f48ff0e4e90f","html_url":"https://github.com/sanurb/express-typescript-skeleton","commit_stats":null,"previous_names":["sanurb/express-typescript-skeleton"],"tags_count":0,"template":true,"template_full_name":"sanurb/ultimate-express-typescript","purl":"pkg:github/sanurb/express-typescript-skeleton","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanurb%2Fexpress-typescript-skeleton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanurb%2Fexpress-typescript-skeleton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanurb%2Fexpress-typescript-skeleton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanurb%2Fexpress-typescript-skeleton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sanurb","download_url":"https://codeload.github.com/sanurb/express-typescript-skeleton/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanurb%2Fexpress-typescript-skeleton/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28516661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["backend","best-practices","express","nodejs"],"created_at":"2026-01-17T19:16:43.966Z","updated_at":"2026-01-17T19:16:44.554Z","avatar_url":"https://github.com/sanurb.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align = \"center\"\u003e\n\n\u003ch1\u003e\u003ca href=\"https://github.com/sanurb/ultimate-express-typescript\"\u003eultimate-express-typescript\u003c/a\u003e\u003c/h1\u003e\n\n[![Node.js \u003e= 16.0.0](https://img.shields.io/badge/Node.js-%3E=16.0.0-green)](https://nodejs.org)\n[![License](https://img.shields.io/github/license/sanurb/ultimate-express-typescript?style=flat\u0026color=eee\u0026label=)](https://github.com/sanurb/ultimate-express-typescript/blob/main/LICENSE)\n[![Contributors](https://img.shields.io/github/contributors/sanurb/ultimate-express-typescript?style=flat\u0026color=ffaaf2\u0026label=People)](https://github.com/sanurb/ultimate-express-typescript/graphs/contributors)\n[![Stars](https://img.shields.io/github/stars/sanurb/ultimate-express-typescript?style=flat\u0026color=98c379\u0026label=Stars)](https://github.com/sanurb/ultimate-express-typescript/stargazers)\n[![Forks](https://img.shields.io/github/forks/sanurb/ultimate-express-typescript?style=flat\u0026color=66a8e0\u0026label=Forks)](https://github.com/sanurb/ultimate-express-typescript/network/members)\n[![Watchers](https://img.shields.io/github/watchers/sanurb/ultimate-express-typescript?style=flat\u0026color=f5d08b\u0026label=Watches)](https://github.com/sanurb/ultimate-express-typescript/watchers)\n[![Last Commit](https://img.shields.io/github/last-commit/sanurb/ultimate-express-typescript?style=flat\u0026color=e06c75\u0026label=)](https://github.com/sanurb/ultimate-express-typescript/pulse)\n\n\u003c/div\u003e\n\nA high-performance boilerplate for creating TypeScript HTTP servers using [Ultimate Express](https://github.com/dimdenGD/ultimate-express) – a drop-in, faster alternative to Express built on µWebSockets. This project is engineered to save time and eliminate boilerplate by providing a production-ready template with modern tooling, streamlined cloning, and robust configuration.\n\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Motivation](#motivation)\n- [Features](#features)\n- [Getting Started](#getting-started)\n  - [Quick Clone with tiged/degit](#quick-clone-with-tigeddegit)\n  - [Installation](#installation)\n- [Usage](#usage)\n  - [Development Mode](#development-mode)\n  - [Build \u0026 Production](#build--production)\n  - [Testing](#testing)\n  - [Linting \u0026 Formatting](#linting--formatting)\n- [Project Structure](#project-structure)\n- [Contributing](#contributing)\n- [License](#license)\n\n\n## Introduction\n\nWelcome to the **Ultimate Express TypeScript Boilerplate**. This template equips you with a lightning-fast, production-ready server foundation by replacing Express with the superior [Ultimate Express](https://github.com/dimdenGD/ultimate-express). With the advantages of SWC transpilation, modern TypeScript configuration, and a focus on developer efficiency, you can scale up projects quickly and reliably.\n\n## Motivation\n\nThis boilerplate is designed to help you:\n\n- **Accelerate Setup:** Reduce the initial project setup time with a ready-to-go configuration.\n- **Enhance Performance:** Replace Express with Ultimate Express for optimized routing and performance.\n- **Ensure Consistency:** Leverage modern tools like SWC, Biome, Vitest, and Docker for a consistent development experience.\n- **Support Modern Workflows:** Adopt TypeScript best practices and leverage a modular, scalable folder structure.\n\n## Features\n\n- Ultimate Express Integration: Full API compatibility with Express, with significant performance benefits.\n- TypeScript-First Approach: Strict type checking and modern project configuration.\n- SWC Transpilation: Lightning-fast builds powered by SWC.\n- Efficient Testing: Uses Vitest with Supertest for fast and reliable testing.\n- Modern Tooling: Biome for linting/formatting, concurrently for process management, and robust Docker integration.\n- Stable Node Environment: Latest LTS Node version in .nvmrc\n- Optimized Folder Structure: Clear separation of assets, source code, tests, and build outputs for maintainability.\n- Comprehensive Testing: Setup with Vitest and Supertest\n- Unified Code Style: Biomejs for consistent coding standards\n- Docker Support: Ready for containerization and deployment\n\n\n## Getting Started\n\n### Quick Clone with tiged/degit\n\nFor a fast, lightweight clone of this repository, we recommend using [tiged](https://github.com/tiged/tiged) (or the alias degit). Instead of using `git clone` and downloading the entire commit history, run the following command:\n\n```bash\ntiged sanurb/ultimate-express-typescript my-app\n```\n\nThis command downloads the latest commit snapshot into the folder `my-app`, resulting in a much quicker setup.\n\n### Installation\n\nAfter cloning, navigate to your project directory and install dependencies using [pnpm](https://pnpm.io/):\n\n```bash\ncd my-app\npnpm i\n```\n\n\n## Usage\n\n### Development Mode\n\nStart the development server with live recompilation and auto-reloading:\n\n```bash\npnpm dev\n```\n\nThis command runs two processes concurrently:\n- **watch:compile:** Monitors your TypeScript files using SWC and outputs them into the `dist/` folder.\n- **watch:dev:** Launches your server in Node’s watch mode, reloading upon changes.\n\n### Build \u0026 Production\n\nFor a production-ready build, run:\n\n```bash\npnpm build\n```\n\nThis cleans the previous build and transpiles your code into the `dist/` directory. To run in production:\n\n```bash\nNODE_ENV=production pnpm build \u0026\u0026 node dist/src/server.js\n```\n\n### Testing\n\nExecute your tests with Vitest:\n\n```bash\npnpm test\n```\n\nFor code coverage, run:\n\n```bash\npnpm test:cov\n```\n\n### Linting \u0026 Formatting\n\nKeep your code clean and uniform by running:\n\n```bash\npnpm lint       # to check for issues\npnpm lint:fix   # to automatically fix issues\npnpm format     # to format your codebase using Biome\n```\n\n\n\n## Project Structure\n\nBelow is an overview of the project’s folder structure:\n\n```\nultimate-express-typescript/\n├── assets/                    # Static assets, images, etc.\n├── dist/                      # Compiled output (generated by build/watch)\n│   └── src/\n│       ├── app.js\n│       ├── controllers/\n│       │   └── health_controller.js\n│       ├── routes/\n│       │   └── health.route.js\n│       └── server.js\n├── src/                       # Source code (TypeScript)\n│   ├── app.ts\n│   ├── controllers/\n│   │   └── health_controller.ts\n│   ├── routes/\n│   │   ├── health.route.ts\n│   │   └── index.ts\n│   ├── server.ts\n│   └── types/\n│       └── reset.d.ts\n├── tests/                     # End-to-end and integration tests\n├── Dockerfile                 # Dockerfile for containerization\n├── biome.json\n├── package.json\n├── pnpm-lock.yaml\n├── tsconfig.json\n└── README.md\n```\n\n\n## Contributing\n\nContributions are welcome!\nFeel free to open issues or submit pull requests on GitHub. Let’s work together to improve this boilerplate and enhance the developer experience.\n\n\n\n## License\n\nThis project is licensed under the ISC License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanurb%2Fexpress-typescript-skeleton","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanurb%2Fexpress-typescript-skeleton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanurb%2Fexpress-typescript-skeleton/lists"}