{"id":41351012,"url":"https://github.com/vinitparekh17/gpcs","last_synced_at":"2026-01-23T07:19:18.835Z","repository":{"id":252241602,"uuid":"818103490","full_name":"vinitparekh17/gpcs","owner":"vinitparekh17","description":"A modern backend API in cloud driven approach.","archived":false,"fork":false,"pushed_at":"2024-11-27T09:08:48.000Z","size":654,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-27T09:32:09.792Z","etag":null,"topics":["aws","aws-examples","backend-api","cloud","express","gcp-vertex-ai","grafana","grafana-loki","nodejs","payment-integration","prometheus","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vinitparekh17.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}},"created_at":"2024-06-21T05:38:12.000Z","updated_at":"2024-11-27T09:16:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"62dde444-e4cb-4a8a-9888-93ef49dbd158","html_url":"https://github.com/vinitparekh17/gpcs","commit_stats":null,"previous_names":["vinitparekh17/gpcs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vinitparekh17/gpcs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinitparekh17%2Fgpcs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinitparekh17%2Fgpcs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinitparekh17%2Fgpcs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinitparekh17%2Fgpcs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vinitparekh17","download_url":"https://codeload.github.com/vinitparekh17/gpcs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinitparekh17%2Fgpcs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28682847,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T05:48:07.525Z","status":"ssl_error","status_checked_at":"2026-01-23T05:48:07.129Z","response_time":59,"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":["aws","aws-examples","backend-api","cloud","express","gcp-vertex-ai","grafana","grafana-loki","nodejs","payment-integration","prometheus","typescript"],"created_at":"2026-01-23T07:19:18.039Z","updated_at":"2026-01-23T07:19:18.829Z","avatar_url":"https://github.com/vinitparekh17.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GPCS Backend\n\n![Docker Image CI](https://github.com/vinitparekh17/gpcs/actions/workflows/ci.yaml/badge.svg)\n![GitHub repo size](https://img.shields.io/github/repo-size/vinitparekh17/gpcs)\n![GitHub contributors](https://img.shields.io/github/contributors/vinitparekh17/gpcs)\n![GitHub stars](https://img.shields.io/github/stars/vinitparekh17/gpcs)\n![GitHub forks](https://img.shields.io/github/forks/vinitparekh17/gpcs)\n![GitHub issues](https://img.shields.io/github/issues/vinitparekh17/gpcs)\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"./github-assets/Gemini_Generated_Image_vll6nsvll6nsvll6.jpeg\" alt=\"gpcs-logo\" width=\"500px\" height=\"500px\" /\u003e\n\n\u003csmall\u003e( Image generated by Gemini-pro )\u003c/small\u003e\n\n\u003c/div\u003e\n\n# Description\n\nGPCS (General Purpose Chat System) API is an AI powered chat system that allows users to interact with a chatbot. The chatbot is capable of answering questions, providing information, and making recommendations. The chatbot is powered by Google's Generative AI model ( Gemini-pro )\n\nThis API is built with cloud driven approach in mind, it uses AWS S3 for storing files, AWS Polly for text-to-speech, GCP Vertex AI ( Multimodal text, image, audio, video, PDF, code, and chat ) for chatbot, GCP Speech API for speech-to-text, Stripe and Razorpay for payment processing and websockets for real-time chat communication ( Between users and chatbot only )\n\n# Features\n\n-   User authentication\n-   AI powered chatbot\n-   Voice interaction with the chatbot\n-   Hybrid payment system (Stripe and Razorpay)\n-   Real-time chat through websockets\n\n# Requirements\n\n\u003cdiv align=\"center\" style=\"margin-bottom: 20px\"\u003e\n\u003cimg src=\"./github-assets/requirements.png\" alt=\"requirements-diagram\" width=\"500px\" /\u003e\n\u003c/div\u003e\n\n-   [NodeJS](https://nodejs.org/en/download) ( v20.6.x or above )\n-   [AWS S3](https://aws.amazon.com/s3/)\n-   [AWS RDS](https://aws.amazon.com/rds/)\n-   [AWS Polly](https://aws.amazon.com/polly/)\n-   [AWS Keyspaces](https://aws.amazon.com/keyspaces/)\n-   [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/)\n-   [GCP Vertax API](https://cloud.google.com/vertex-ai?hl=en)\n-   [GCP Speech API](https://cloud.google.com/speech-to-text)\n-   [Stripe API](https://docs.stripe.com/api)\n-   [Razorpay API](https://razorpay.com/docs/api/)\n-   [Docker](https://www.docker.com/) ( Optional but recommended )\n\n# Deployment Diagram\n\n\u003cdiv align=\"center\" style=\"margin-bottom: 20px\"\u003e\n\u003cimg src=\"./github-assets/Cloud Architecture.png\" alt=\"deployment-diagram\" width=\"500px\" /\u003e\n\u003c/div\u003e\n\nThis diagram illustrates the deployment architecture of the GPCS API. The API deployment architecture is designed to be scalable, fault-tolerant and most importantly secure infrastructure. \n\nTo achieve this, I preferred to use AWS Elastic Container Service (ECS) with Fargate launch type. This allows me to run the API in a containerized environment without worrying about the underlying infrastructure.\n\nThe reason of choosing ECS over EC2 is because ECS is a fully managed container orchestration service that allows me to run, stop, and manage Docker containers on a cluster. It also provides features like auto-scaling, load balancing, and monitoring.\n\nAll this advantages comes with relatively less efforts to manage and worry about infra and security which helps me to be more productive.\n\n# Installation\n\n1. Clone the repository\n\n```bash\ngit clone https://github.com/vinitparekh17/gpcs\n```\n\n2. Install dependencies\n\n```bash\nyarn install\n```\n\n3. Create a `.env` file in the root directory as per the `.env.example` file\n\n```bash\ncp .env.example .env\n```\n\n4. Start the server\n\n```bash\nyarn server-dev # For development\n\nyarn build \u0026\u0026 yarn start # For production\n```\n\n# Run with Docker\n\n1. Build the Docker image\n\n```bash\ndocker build -t gpcs -f ./docker .\n```\n\n2. Run the Docker container\n\n```bash\ndocker run -p 8080:8080 gpcs -d --name gpcs\n```\n\n# Logging and Monitoring\n\n## Overview\n\n\u003cdiv align=\"center\" style=\"margin-bottom: 20px\"\u003e\n\u003cimg src=\"./github-assets/log-arch-light.png\" alt=\"log-management-diagram\" width=\"500px\" /\u003e\n\u003c/div\u003e\n\n## Components\n\n### Grafana\n- Web-based analytics and interactive visualization platform\n- Supports multiple data sources\n- Provides customizable dashboards for real-time monitoring\n\n### Prometheus\n- Open-source systems monitoring and alerting toolkit\n- Collects and stores metrics as time-series data\n- Supports powerful query language (PromQL)\n\n### Loki\n- Lightweight log aggregation system\n- Designed for cloud-native environments\n- Optimized for storing and querying container logs\n\n## Setup Requirements\n\n- Docker\n- Docker Compose\n- Minimum system resources:\n  - 4 GB RAM\n  - 2 CPU cores\n\n## Configuration\n\n1. Install Docker\n2. Configure Prometheus targets\n3. Set up Loki log collection\n4. Configure Grafana data sources\n5. Create monitoring dashboards\n\n## Useful Links\n\n- [Grafana Official Site](https://grafana.com/)\n- [Prometheus Documentation](https://prometheus.io/docs/)\n- [Loki GitHub Repository](https://github.com/grafana/loki)\n\n\u003e [!IMPORTANT]\n\u003e Make sure to have MongoDB running on your local machine or provide the connection string in the `.env` file \u003cbr/\u003e \u003cbr/\u003e\n\u003e Also, make sure to have the required AWS, GCP, Stripe and Razorpay credentials in the `.env` file\n\u003e which are required for the API to work properly.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinitparekh17%2Fgpcs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvinitparekh17%2Fgpcs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinitparekh17%2Fgpcs/lists"}