{"id":31070892,"url":"https://github.com/basedhound/aquisitions_api","last_synced_at":"2026-05-06T03:33:11.110Z","repository":{"id":314314452,"uuid":"1044558450","full_name":"basedhound/aquisitions_api","owner":"basedhound","description":"An API project developed using Docker, Warp, Arcjet, with automated CI/CD, and a backend implemented with Node.js, Express.js, Neon Postgres, Drizzle ORM, and Zod—secure, scalable, and production-ready.","archived":false,"fork":false,"pushed_at":"2025-09-11T18:34:49.000Z","size":1127,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-11T20:23:01.616Z","etag":null,"topics":["api","arcjet","bcrypt","cookie-parser","docker","dockerfile","dotenv","drizzle","drizzle-orm","express","helmet","morgan","nodejs","warp","winston","zod"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/basedhound.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-25T21:48:18.000Z","updated_at":"2025-09-11T18:34:54.000Z","dependencies_parsed_at":"2025-09-11T20:27:01.312Z","dependency_job_id":"52866a56-1305-4c63-98c7-bc6bd8e8f99e","html_url":"https://github.com/basedhound/aquisitions_api","commit_stats":null,"previous_names":["basedhound/aquisitions_api"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/basedhound/aquisitions_api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basedhound%2Faquisitions_api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basedhound%2Faquisitions_api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basedhound%2Faquisitions_api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basedhound%2Faquisitions_api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/basedhound","download_url":"https://codeload.github.com/basedhound/aquisitions_api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basedhound%2Faquisitions_api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32677928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T02:33:58.958Z","status":"ssl_error","status_checked_at":"2026-05-06T02:33:39.611Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["api","arcjet","bcrypt","cookie-parser","docker","dockerfile","dotenv","drizzle","drizzle-orm","express","helmet","morgan","nodejs","warp","winston","zod"],"created_at":"2025-09-15T23:03:37.092Z","updated_at":"2026-05-06T03:33:11.081Z","avatar_url":"https://github.com/basedhound.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cbr /\u003e\n    \u003ca href=\"https://youtu.be/H5FAxTBuNM8\" target=\"_blank\"\u003e\n      \u003cimg src=\"public/readme/hero.webp\" alt=\"Project Banner\"\u003e\n    \u003c/a\u003e\n  \u003cbr /\u003e\n\n  \u003cdiv\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Node.js-339933?style=for-the-badge\u0026logo=nodedotjs\u0026logoColor=white\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Express.js-000000?style=for-the-badge\u0026logo=express\u0026logoColor=white\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Neon%20Postgres-2496ED?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Drizzle%20ORM-FFDF00?style=for-the-badge\u0026logo=drizzle\u0026logoColor=black\"/\u003e\n\n  \u003c/div\u003e\n\n  \u003ch3 align=\"center\"\u003eBuild a Scalable Production Ready API\u003c/h3\u003e\n\n\u003c/div\u003e\n\n## 📋 \u003ca name=\"table\"\u003eTable of Contents\u003c/a\u003e\n\n1. ✨ [Introduction](#introduction)\n2. ⚙️ [Tech Stack](#tech-stack)\n3. 🔋 [Features](#features)\n4. 🤸 [Quick Start](#quick-start)\n\n## \u003ca name=\"introduction\"\u003e✨ Introduction\u003c/a\u003e\n\nMaster DevOps by taking an API from code to production with Docker, Kubernetes, Git \u0026 GitHub, Warp, and CI/CD Actions! Build a scalable backend using Node.js, Express.js, Neon Postgres, and Drizzle ORM, while testing ensures reliability at every step. Learn to containerize services, orchestrate deployments, automate pipelines, and monitor applications—perfect for developers who want hands-on experience shipping robust, production-ready systems.\n\n## \u003ca name=\"tech-stack\"\u003e⚙️ Tech Stack\u003c/a\u003e\n\n- **[Arcjet](https://jsm.dev/dops25-arcjet)** is a developer-first security layer that enables you to protect your applications with minimal code. It offers features like bot protection, rate limiting, email validation, and defense against common attacks. Arcjet's SDK integrates seamlessly into your application, providing real-time security decisions without the need for additional infrastructure.\n\n\n- **[Docker](https://www.docker.com/)** is a leading containerization platform that allows you to package applications along with all their dependencies into portable, lightweight containers. This ensures consistent behavior across different environments, simplifies deployment, and makes scaling applications more efficient.  \n\n- **[Kubernetes](https://kubernetes.io/)** is an open-source orchestration system designed to automate the deployment, scaling, and management of containerized applications. It handles tasks like load balancing, self-healing, and rolling updates, making it essential for running applications reliably at scale.  \n\n- **[Warp](https://jsm.dev/dops25-warp)** is a modern terminal built in Rust, optimized for developer productivity. It offers features like AI-assisted commands, easy collaboration, command history search, and a faster, more intuitive interface compared to traditional terminals.  \n\n- **[Node.js](https://nodejs.org/)** is a fast, event-driven JavaScript runtime built on Chrome’s V8 engine. It enables developers to build scalable, high-performance server-side applications and APIs using JavaScript on both the client and server side.  \n\n- **[Express.js](https://expressjs.com/)** is a minimal and flexible Node.js web application framework. It provides robust features for building APIs and server-side applications, including routing, middleware support, and simplified request/response handling.  \n\n- **[Neon Postgres](https://jsm.dev/dops25-neon)** is a fully managed, serverless Postgres database designed for modern cloud applications. It offers autoscaling, branching for development workflows, and simplifies database management without compromising performance.  \n\n- **[Drizzle ORM](https://orm.drizzle.team/)** is a TypeScript-first, lightweight ORM for SQL databases. It provides type safety, schema migrations, and an intuitive API for building reliable and maintainable database queries.  \n\n- **[Zod](https://zod.dev/)** is a TypeScript-first schema validation library that ensures runtime type safety. It helps developers validate data structures, enforce strict type checks, and catch errors early in the development process.  \n\n## \u003ca name=\"features\"\u003e🔋 Features\u003c/a\u003e\n\n👉 **Absolute Imports**: Clean import paths using `#` prefix aliases for more organized and readable code.  \n\n👉 **Business Listings**: Create, update, delete, and browse business listings efficiently.  \n\n👉 **Database Integration**: Integrate PostgreSQL with Drizzle ORM, including migrations for schema management.  \n\n👉 **Deal Management**: Create deals on listings, accept or reject offers, and track deal status.  \n\n👉 **Docker Support**: Full containerization with development and production environments for consistent deployment.  \n\n👉 **ESLint + Prettier**: Enforce code linting and formatting rules for cleaner, consistent code.  \n\n👉 **Health Monitoring**: Endpoint to check system health and monitor overall application status.  \n\n👉 **Hot Reload**: Development server automatically restarts on file changes for faster iteration.  \n\n👉 **Jest Testing**: Framework for unit and integration testing with SuperTest for HTTP endpoints.  \n\n👉 **Request Validation**: Validate all API inputs using Zod schemas to ensure data integrity.  \n\n👉 **Role-Based Access Control**: Implement admin and user roles with permission middleware for secure operations.  \n\n👉 **Structured Logging**: Winston-based logging throughout the application for better monitoring and debugging.  \n\n👉 **User Authentication \u0026 Authorization**: JWT-based authentication supporting signup, signin, and signout workflows.  \n\n👉 **User Management**: CRUD operations for user accounts, enabling easy administration and management.\n\n\nAnd many more, including code architecture and reusability.\n\n## \u003ca name=\"quick-start\"\u003e🤸 Quick Start\u003c/a\u003e\n\nFollow these steps to set up the project locally on your machine.\n\n**Prerequisites**\n\nMake sure you have the following installed on your machine:\n\n- [Git](https://git-scm.com/)\n- [Node.js](https://nodejs.org/en)\n- [npm](https://www.npmjs.com/) (Node Package Manager)\n\n**Cloning the Repository**\n\n```bash\ngit clone [remote URL]\n```\n\n**Installation**\n\nInstall the project dependencies using npm:\n\n```bash\nnpm install\n```\n\n**Set Up Environment Variables**\n\nCreate a new file named `.env` in the root of your project and add the following content:\n\n```env\n# Server Configuration\nPORT=3000\nNODE_ENV=development\nLOG_LEVEL=info\n\n# Database Configuration\nDATABASE_URL=\n\n# Arcjet\nARCJET_KEY=\n```\n\nReplace the placeholder values with your real credentials. You can get these by signing up at: [**Arcjet**](https://jsm.dev/dops25-arcjet), [**Neon**](https://jsm.dev/dops25-neon).\n\n**Running the Project**\n\n```bash\nnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser to view the project.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasedhound%2Faquisitions_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasedhound%2Faquisitions_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasedhound%2Faquisitions_api/lists"}