{"id":13552805,"url":"https://github.com/lukeautry/ts-app","last_synced_at":"2025-04-09T12:07:58.440Z","repository":{"id":38272706,"uuid":"158491962","full_name":"lukeautry/ts-app","owner":"lukeautry","description":"Boilerplate project for a TypeScript API (Express, tsoa) + UI (React/TSX)","archived":false,"fork":false,"pushed_at":"2023-01-23T22:29:20.000Z","size":2266,"stargazers_count":268,"open_issues_count":22,"forks_count":51,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-02T10:13:51.556Z","etag":null,"topics":["express","node","postgresql","react","redis","typescript","webpack"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lukeautry.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-21T04:44:34.000Z","updated_at":"2025-03-17T17:43:03.000Z","dependencies_parsed_at":"2023-02-13T04:15:52.883Z","dependency_job_id":null,"html_url":"https://github.com/lukeautry/ts-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeautry%2Fts-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeautry%2Fts-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeautry%2Fts-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeautry%2Fts-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lukeautry","download_url":"https://codeload.github.com/lukeautry/ts-app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248036067,"owners_count":21037092,"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":["express","node","postgresql","react","redis","typescript","webpack"],"created_at":"2024-08-01T12:02:10.690Z","updated_at":"2025-04-09T12:07:58.416Z","avatar_url":"https://github.com/lukeautry.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"![ci](https://github.com/lukeautry/ts-app/workflows/ci/badge.svg?branch=master)\n\n# ts-app: Full-stack TypeScript Development Framework\n\nThis project is a starting point for developing an API-first application using TypeScript, Node.js, and React.\n\nThis project aims to support a \"domain driven\" approach. A client library is automatically generated from the API, providing a statically typed interface with which to interact with the API from the React UI. The goal is to provide a type-safe and productive developer experience for rapid web application development.\n\n** **Check out the new [SaaS branch](https://github.com/lukeautry/ts-app/tree/saas)!** Includes login flow, password reset, routing, emails and email previews, component library development via Cosmos, and more **\n\n## Getting started\n\n- `yarn` to install dependencies\n- `yarn build` to build from source\n- `yarn cli start` to start developer environment\n- `yarn cli` to use developer CLI\n    - Includes dev environment setup, docker management, database management, and more\n    - [Full CLI docs](./src/cli)\n\n## Developer experience\n\n![alt text](.docs/shell.png \"Developer experience\")\n\n## Project structure\n\nThis project uses [TypeScript Project References](https://www.typescriptlang.org/docs/handbook/project-references.html) to organize modules. This gives us:\n- Faster builds\n- Formal project dependencies; subprojects can't import from other subprojects unless the dependency is configured\n\n### Packages\n- [cli](./src/cli) - Developer CLI tool\n- [client](./src/client) - Front-end React App\n- [common](./src/common) - Modules used by either browser or node environments\n- [node](./src/node) - Modules used by node environments\n- [server](./src/server) - Express server w/ tsoa API\n- [openapi-client](./src/openapi-client) - Autogenerated TypeScript client; used to communicate with OpenAPI REST API from [client](./src/client)\n- [cypress](./src/cypress) - Cypress tests\n\n## System Requirements\n- [Node.js 14+](https://nodejs.org/en/download/)\n- [docker](https://www.docker.com) and [docker-compose](https://docs.docker.com/compose)\n- [yarn](https://yarnpkg.com/en)\n\n## Technologies Used\n- [TypeScript](http://www.typescriptlang.org/)\n- Backend\n    - [Node.js](https://nodejs.org)\n    - [Express](https://expressjs.com/)\n    - [tsoa](https://github.com/lukeautry/tsoa)\n        - Generates Express Routes from TypeScript controllers\n        - Generates [OpenAPI (\"Swagger\")](https://swagger.io/docs/specification/about) specification, enabling automatic documentation and client library generation\n    - [PostgreSQL](https://www.postgresql.org/) as RDBMS\n        - [TypeORM](http://typeorm.io) for code-first database migrations\n            - Optional: ORM-like queries\n    - [Redis](https://redis.io/) for caching/messaging\n- Frontend\n    - [react](https://reactjs.org/)\n    - [openapi-typescript-codegen](https://github.com/ferdikoomen/openapi-typescript-codegen) for API client generation\n    - [styled-components](https://styled-components.com/) for styling/css\n    - [webpack](https://webpack.js.org) for bundling static assets\n- Developer environment\n    - [docker](https://www.docker.com/) and [docker-compose](https://docs.docker.com/compose) for non-Node.js project dependencies\n    - Single `start` script that live reloads the API, UI, and related services\n    - VSCode [launch.json](./.vscode/launch.json) settings have been included to support debugging\n- Testing\n    - [jest](https://jestjs.io) test runner/assertions/utilities\n    - [supertest](https://github.com/visionmedia/supertest) for API endpoint tests\n    - [cypress](https://www.cypress.io/) for end-to-end testing\n    - [react-testing-library](https://testing-library.com/docs/react-testing-library/intro) for component testing\n\n## Running Tests\n\n### Jest Tests\n\nIncludes server node.js tests and front-end react-testing-library tests.\n\n```\nyarn cli test jest\n```\n\n### Cypress Tests\n\nEnd to end tests that touch everything and hit a running version of the application\n\n```\nyarn cli test cypress\n```\n\n## Contributing\n- Features and bug fixes welcome\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukeautry%2Fts-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukeautry%2Fts-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukeautry%2Fts-app/lists"}