{"id":30523777,"url":"https://github.com/zhravan/neonode-oss-quick-starter","last_synced_at":"2025-08-26T20:48:20.759Z","repository":{"id":254503100,"uuid":"846736386","full_name":"zhravan/neonode-oss-quick-starter","owner":"zhravan","description":"Node.js/TypeScript starter kit optimized for seamless development and deployment, powered by Neon.tech","archived":false,"fork":false,"pushed_at":"2024-10-19T21:39:20.000Z","size":285,"stargazers_count":5,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-14T19:44:27.671Z","etag":null,"topics":["database","deno","javascript","nodejs","postgres","postgresql","serverless","typescript"],"latest_commit_sha":null,"homepage":"","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/zhravan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-23T21:03:55.000Z","updated_at":"2024-11-24T21:49:26.000Z","dependencies_parsed_at":"2025-02-18T04:42:06.793Z","dependency_job_id":null,"html_url":"https://github.com/zhravan/neonode-oss-quick-starter","commit_stats":null,"previous_names":["shravan20/neonode-quick-starter","shravan20/neonode-oss-quick-starter","zhravan/neonode-oss-quick-starter"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/zhravan/neonode-oss-quick-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhravan%2Fneonode-oss-quick-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhravan%2Fneonode-oss-quick-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhravan%2Fneonode-oss-quick-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhravan%2Fneonode-oss-quick-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhravan","download_url":"https://codeload.github.com/zhravan/neonode-oss-quick-starter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhravan%2Fneonode-oss-quick-starter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272254426,"owners_count":24901039,"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","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["database","deno","javascript","nodejs","postgres","postgresql","serverless","typescript"],"created_at":"2025-08-26T20:48:19.555Z","updated_at":"2025-08-26T20:48:20.747Z","avatar_url":"https://github.com/zhravan.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg align=\"center\" width=\"20%\" src=\"assets/logo.png\" alt=\"logo\"/\u003e\n  \u003ch2 align=\"center\"\u003eNeonode Quick Starter\u003c/h2\u003e\n\u003c/p\u003e\n\nA production-ready, class-based Node.js/TypeScript starter project with Flexible Framework and PostgreSQL as DB, designed for modular and scalable applications.\n\n[![Build Status](https://img.shields.io/github/actions/workflow/status/shravan20/neonode-quick-starter/ci.yml)](https://github.com/shravan20/neonode-quick-starter/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Table of Contents\n\n- [x] [**Features**](#features)\n- [x] [**Getting Started**](#getting-started)\n  - Prerequisites\n  - Installation\n    - Configuration (Environment Variables)\n- [x] [**Project Structure**](#project-structure)\n- [ ] [**Usage**]()\n  - Health Check Endpoint\n  - Logging\n- [ ] **Deployment**\n- [x] [**Contributing**](#contributing)\n\n### Features\n\n- [x] **TypeScript**: Fully typed for stronger code reliability.\n- [x] **Class-based Architecture**: Organized using classes for controllers, routers, and services.\n- [x] **Middleware**: Pre-configured for JSON parsing, URL encoding, etc.\n- [x] **Environment Config**: Use DotEnv for storing custom configurations in process.env.\n- [ ] **API Documentation**: Integrates with Swagger or similar tools for auto-generated docs.\n- [ ] **API Versioning**: Supports versioning for backward compatibility.\n- [ ] **Caching**: Implements caching with Valkey/KeyDB support.\n- [ ] **Routing**: Separates Web Routes and API Routes for better organization.\n- [ ] **Authentication Middleware**: Uses CSRF Tokens for Web routes, JWT for API routes.\n- [ ] **Testing**: Comprehensive unit and integration testing with Jest/Mocha.\n- [ ] **Database Migration**: Supports tools like Knex or Sequelize for schema management.\n- [ ] **Health Monitoring**: Easy integration with tools like Prometheus/Datadog.\n- [ ] **Background Queues**: Implements background job processing.\n- [x] **Logging Interceptor**: Uses Winston for enhanced log management.\n- [ ] **PostgreSQL Queries**: Supports atomic PostgreSQL queries on demand.\n- [ ] **Connection Pools**: Customizable backend storage connection pools.\n- [ ] **Rate Limiting**: Limits requests per user to prevent abuse.\n- [ ] **Global Handlers**: Centralized response and error handling.\n- [x] **Graceful Shutdown**: Ensures smooth server shutdown.\n- [ ] **Multi-language Support**: Adds i18n for multiple languages.\n- [ ] **Task Scheduler**: Supports scheduled tasks with node-cron.\n- [ ] **Documentation**:\n  - [x] README.md\n  - [x] License.md\n  - [x] Code of Conduct.md\n  - [x] Contributing.md\n  - [ ] Architecture.md\n  - [x] Security.md\n  - [ ] Deployment.md\n  - [ ] Configuration.md\n  - [ ] Roadmap.md\n  - [ ] Support.md\n  - [ ] API_docs.md\n  - [ ] FAQ.md\n  - [ ] Acknowledgements.md\n  - [ ] Changelog.md\n\n### Getting Started\n\n#### Prerequisites\n\n    - Node.js (v16.x or higher)\n    - npm or yarn\n    - Docker (optional, for containerization)\n\n#### Installation\n\nConfiguration: The application uses environment variables for configuration. Create a .env file at the root of the project and add the necessary variables from `.env.template` for successful execution in dev/production env.\n\nSteps to setup the code:\n\n  1. Clone the repository\n\n        ```sh\n        git clone https://github.com/shravan20/neonode-quick-starter.git\n        cd neonode-quick-starter\n        ```\n\n  2. Install dependencies\n\n        ```sh\n        npm install\n        ```\n\n  3. Running Locally\n\n        ```sh\n        npm run dev\n        ```\n\n        This will start the development server with hot-reloading.\n\n  4. Running in Production\n\n        ```sh\n        npm run build \u0026\u0026 npm start\n        ```\n\n### Project Structure\n\n```sh\n📂 src\n│\n├── 📂 api                      # Contains the main application logic (entities and modules)\n│   ├── 📂 entities             # Data models, types, and schemas (e.g., database entities, DTOs)\n│   │   └── user.entity.ts    # Example: User entity schema\n│   │   └── base.entity.ts    # Example: Base entity schema\n│   └── 📂 modules              # Application modules, each encapsulated in its own directory\n│       ├── 📂 health-check     # Health check module\n│       │   ├── health-check.controller.ts  # Handles incoming requests and responses\n│       │   ├── health-check.repository.ts  # Data persistence logic\n│       │   ├── health-check.router.ts      # Routes definition for health check API\n│       │   └── health-check.service.ts     # Business logic related to health checks\n│       └── 📂 user             # User module (example)\n│           ├── user.controller.ts          # Handles user-related requests\n│           ├── user.repository.ts          # User data persistence\n│           ├── user.router.ts              # Routes definition for user API\n│           └── user.service.ts             # Business logic for user operations\n├── app.ts                   # Application initialization and configuration\n├── 📂 helpers                  # Utility functions and helpers\n│   └── logger.ts            # Custom logger setup (e.g., Pino or Winston)\n├── 📂 middlewares              # Custom middleware functions (e.g., authentication, error handling)\n│   └── auth.middleware.ts    # Example: Authentication middleware\n├── server.ts                # Server startup and configuration (Express.js instance)\n\n```\n\n### Contributing\n\nContributions are always welcome and encouraged! While I strive to cover as many use cases as possible. If you come across any issues or something that doesn't make sense, feel free to open an issue—I'd be happy to discuss and improve things together.\n\nFor further details, refer to [contributing.md](./contributing.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhravan%2Fneonode-oss-quick-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhravan%2Fneonode-oss-quick-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhravan%2Fneonode-oss-quick-starter/lists"}