{"id":32724712,"url":"https://github.com/szabodorka/netscore-aws","last_synced_at":"2026-04-04T21:32:00.855Z","repository":{"id":317832894,"uuid":"1055428672","full_name":"szabodorka/netscore-aws","owner":"szabodorka","description":"Full-stack website scorer platform built using Java-Spring Boot and React; deployed to AWS using Terraform; including Jenkins CI/CD.","archived":false,"fork":false,"pushed_at":"2025-11-10T11:06:27.000Z","size":2080,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-10T13:06:23.327Z","etag":null,"topics":["aws","docker","docker-compose","java","jenkins","kubernetes","react","spring-boot","terraform"],"latest_commit_sha":null,"homepage":"","language":"Java","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/szabodorka.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-09-12T08:53:52.000Z","updated_at":"2025-10-31T12:06:03.000Z","dependencies_parsed_at":"2025-10-03T11:35:18.903Z","dependency_job_id":"e41b864f-0396-4424-93cb-b3d7de4e71d6","html_url":"https://github.com/szabodorka/netscore-aws","commit_stats":null,"previous_names":["szabodorka/netscore-aws"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/szabodorka/netscore-aws","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szabodorka%2Fnetscore-aws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szabodorka%2Fnetscore-aws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szabodorka%2Fnetscore-aws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szabodorka%2Fnetscore-aws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/szabodorka","download_url":"https://codeload.github.com/szabodorka/netscore-aws/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szabodorka%2Fnetscore-aws/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31415110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"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","docker","docker-compose","java","jenkins","kubernetes","react","spring-boot","terraform"],"created_at":"2025-11-03T01:01:01.916Z","updated_at":"2026-04-04T21:32:00.845Z","avatar_url":"https://github.com/szabodorka.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/szabodorka/netscore-aws\"\u003e\n    \u003cimg src=\"./frontend/src/assets/netscore_logo.PNG\" alt=\"Logo\" width=\"380\" height=\"120\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eNetScore\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    A full-stack web application for rating and reviewing websites.\n    \u003cbr /\u003e\n    \u003cstrong\u003eStill under active development\u003c/strong\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"#about-the-project\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"#tech-stack\"\u003eTech Stack\u003c/a\u003e ·\n    \u003ca href=\"#infrastructure\"\u003eInfrastructure\u003c/a\u003e ·\n    \u003ca href=\"#how-to-deploy-on-aws\"\u003eDeployment\u003c/a\u003e ·\n    \u003ca href=\"#cleanup\"\u003eCleanup\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## Table of Contents\n\n1. [About the Project](#about-the-project)\n2. [Tech Stack](#tech-stack)\n3. [Infrastructure](#infrastructure)\n4. [Collaboration](#collaboration)\n5. [Prerequisites / Dependencies](#prerequisites)\n6. [Local Development (Docker Compose)](#local-development)\n7. [How to Deploy on AWS](#how-to-deploy-on-aws)\n8. [Cleanup](#cleanup)\n9. [Contributing](#contributing)\n\n---\n\n## About the Project\n\n**NetScore** is a full-stack web application designed to allow users to **rate and review websites**.\n\nOverview of the functionalities:\n\n- Register and log in\n- Add new websites (with automatic domain detection)\n- Write, edit, and delete reviews\n- View aggregated ratings and statistics\n- Manage account and personal reviews\n\nThe platform is backed by an **AWS-based infrastructure** with a full CI/CD pipeline managed by **Jenkins**, running privately inside a VPN-secured EC2 instance.\n\nThe project is still **under active development** — features and infrastructure are developed continuously.\n\n---\n\n## Tech Stack\n\n| Category                 | Technologies                                                                                                                                                                                                                                                                                              |\n| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Frontend**             | [![React](https://img.shields.io/badge/React-%2320232a.svg?style=for-the-badge\u0026logo=react\u0026logoColor=%2361DAFB)](https://react.dev/) [![Vite](https://img.shields.io/badge/Vite-646CFF?style=for-the-badge\u0026logo=vite\u0026logoColor=white)](https://vitejs.dev/)                                                |\n| **Backend**              | [![Java](https://img.shields.io/badge/Java-ED8B00?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white)](https://www.java.com/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-6DB33F?style=for-the-badge\u0026logo=springboot\u0026logoColor=white)](https://spring.io/projects/spring-boot)               |\n| **Database**             | [![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)](https://www.postgresql.org/)                                                                                                                                                          |\n| **Containerization**     | [![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white)](https://www.docker.com/) [![Kubernetes](https://img.shields.io/badge/Kubernetes-326CE5?style=for-the-badge\u0026logo=kubernetes\u0026logoColor=white)](https://kubernetes.io/)                              |\n| **CI/CD**                | [![Jenkins](https://img.shields.io/badge/Jenkins-D24939?style=for-the-badge\u0026logo=jenkins\u0026logoColor=white)](https://www.jenkins.io/) [![GitHub Actions](https://img.shields.io/badge/GitHub%20Actions-2088FF?style=for-the-badge\u0026logo=githubactions\u0026logoColor=white)](https://github.com/features/actions) |\n| **Cloud Infrastructure** | [![AWS](https://img.shields.io/badge/AWS-FF9900?style=for-the-badge\u0026logo=amazonaws\u0026logoColor=white)](https://aws.amazon.com/) [![Terraform](https://img.shields.io/badge/Terraform-844FBA?style=for-the-badge\u0026logo=terraform\u0026logoColor=white)](https://www.terraform.io/)                                 |\n| **VPN \u0026 Security**       | [![OpenVPN](https://img.shields.io/badge/OpenVPN-EA7E20?style=for-the-badge\u0026logo=openvpn\u0026logoColor=white)](https://openvpn.net/)                                                                                                                                                                          |\n\n---\n\n## Infrastructure\n\n### AWS Architecture Overview\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/network-diagram.png\" alt=\"Network Diagram\" width=\"700\"/\u003e\n\u003c/p\u003e\n\n### Backend Data Flow\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/backend-data-flow.png\" alt=\"Backend Data Flow\" width=\"700\"/\u003e\n\u003c/p\u003e\n\n---\n\n## Collaboration\n\n### Branching Strategy\n\nWe use a feature-per-branch workflow. All feature branches (e.g. `feature/website-page`) are merged into development branches for the specific project components (e.g. `frontend`).\n\n### Conventional Commits\n\nWe applied the following commit message format according to conventional commit methodology:\n\n```bash\n\u003ctype\u003e(\u003coptional scope\u003e): \u003cdescription\u003e\n```\n\nExample commits:\n\n- feat(website): implement domain extraction\n- fix(model): change score type to int\n- style(account): apply responsive design to MyAccount page\n\n### Agile Development\n\nEach feature is one sprint.  \nSmall, incremental merges into development branches, reviewed before merging to `main`.\n\n---\n\n## Prerequisites\n\nMake sure you have installed:\n\n- [Java 17+](https://adoptium.net/)\n- [Node.js (v18+)](https://nodejs.org/)\n- [Docker](https://www.docker.com/)\n- [Terraform](https://www.terraform.io/)\n- [AWS CLI](https://aws.amazon.com/cli/)\n- [kubectl](https://kubernetes.io/docs/tasks/tools/)\n- [OpenVPN](https://openvpn.net/) (for Jenkins access)\n\n---\n\n## Local Development\n\nStart the stack locally using Docker Compose:\n\n```bash\ndocker compose up --build\n```\n\nAccess the application on http://localhost:80\n\nBackend API: http://localhost:8080/api\n\nTo stop all containers:\n\n```bash\ndocker compose down\n```\n\n## How to Deploy on AWS\n\n**AWS access (CLI configured) is required.**\n\n### Step 1 — Remote Backend Setup\n\nNavigate to the terraform-backend directory:\n\n```bash\ncd terraform-backend\nterraform init\nterraform apply\n```\n\nThis provisions:\n\n- S3 bucket for Terraform state\n- DynamoDB table for state locking\n\n### Step 2 — Jenkins EBS Volume Setup\n\nNavigate to the jenkins-ebs directory and apply:\n\n```bash\nterraform apply\n```\n\nThis creates:\n\n- EBS Volume\n- IAM policies for Jenkins EC2 instance\n\n### Step 3 — Deploy Core Infrastructure\n\n```bash\ncd infrastructure\nterraform init\nterraform apply\n```\n\nThis provisions:\n\n- VPC, subnets, IGW, NAT\n- VPN\n- EKS Cluster\n- RDS PostgreSQL (Multi-AZ)\n- Jenkins EC2 (in private subnet, VPN access required)\n- ECR repositories for backend and frontend images\n- Kubernetes deployments (backend and frontend pods) and ingress\n\n## Cleanup\n\nTo completely remove all AWS resources, destroy in reverse order:\n\n```bash\n# Infrastructure (EKS, RDS, EC2, ECR, etc.)\n\ncd infrastructure\nterraform destroy\n\n# Jenkins EBS Volume\n\ncd ../jenkins-ebs\nterraform destroy\n\n# Remote Terraform Backend (S3, DynamoDB)\n\ncd ../terraform-backend\nterraform destroy\n```\n\n## Contributing\n\nWe really appreciate any suggestion that would make the project better. Feel free to fork the repo and create a pull request.\nIf you like the project, don't forget to give it a star! Thank you!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/new-feature`)\n3. Commit your Changes (`git commit -m 'Add a new feature`)\n4. Push to the Branch (`git push origin feature/new-feature`)\n5. Open a Pull Request\n\n### Top contributors:\n\n\u003ca href=\"https://github.com/szabodorka/netscore-aws/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=szabodorka/netscore-aws\" /\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fszabodorka%2Fnetscore-aws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fszabodorka%2Fnetscore-aws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fszabodorka%2Fnetscore-aws/lists"}