{"id":16998578,"url":"https://github.com/sivaprasadreddy/devzone","last_synced_at":"2025-03-17T09:30:44.076Z","repository":{"id":50064973,"uuid":"310760186","full_name":"sivaprasadreddy/devzone","owner":"sivaprasadreddy","description":"A sample SpringBoot application","archived":false,"fork":false,"pushed_at":"2024-08-21T13:13:22.000Z","size":1465,"stargazers_count":26,"open_issues_count":11,"forks_count":19,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-21T05:10:32.063Z","etag":null,"topics":["docker","docker-compose","elk-stack","gatling","gradle","grafana","java","kibana","kubernetes","loki","monitoring","playwright-java","prometheus","sonarqube","spring-boot","spring-security","testcontainers","thymeleaf"],"latest_commit_sha":null,"homepage":"","language":"Java","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/sivaprasadreddy.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":"2020-11-07T03:36:25.000Z","updated_at":"2024-08-22T01:24:28.000Z","dependencies_parsed_at":"2024-01-24T18:31:43.790Z","dependency_job_id":"bc2843ef-4870-4528-9c4e-720f2631d6c9","html_url":"https://github.com/sivaprasadreddy/devzone","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/sivaprasadreddy%2Fdevzone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sivaprasadreddy%2Fdevzone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sivaprasadreddy%2Fdevzone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sivaprasadreddy%2Fdevzone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sivaprasadreddy","download_url":"https://codeload.github.com/sivaprasadreddy/devzone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221674864,"owners_count":16861857,"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":["docker","docker-compose","elk-stack","gatling","gradle","grafana","java","kibana","kubernetes","loki","monitoring","playwright-java","prometheus","sonarqube","spring-boot","spring-security","testcontainers","thymeleaf"],"created_at":"2024-10-14T04:05:39.058Z","updated_at":"2024-10-27T12:24:59.483Z","avatar_url":"https://github.com/sivaprasadreddy.png","language":"Java","readme":"# DevZone\nDevZone is a web application where developers can register and post their favourite article/video posts. \n\n## Features\n* Users can register and login\n* Authenticated user can create a new post under a category\n* Authenticated user can delete own posts\n* Admin user can delete any post\n* Any user(including guest users) can view posts with pagination\n  * sort by posted date desc (default)\n  * by category\n  * by searching for a keyword in title\n\n[![GitHub Build](https://github.com/sivaprasadreddy/devzone/actions/workflows/gradle.yml/badge.svg)](https://github.com/sivaprasadreddy/devzone/actions/workflows/gradle.yml)\n[![CircleCI](https://dl.circleci.com/status-badge/img/gh/sivaprasadreddy/devzone/tree/main.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/sivaprasadreddy/devzone/tree/main)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=sivaprasadreddy_devzone\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=sivaprasadreddy_devzone)\n\n## Tech Stack\n* [SpringBoot](https://spring.io/projects/spring-boot)\n* [Spring Data JPA](https://spring.io/projects/spring-data-jpa)\n* [Spring Security](https://spring.io/projects/spring-security)\n* [Postgres](https://www.postgresql.org/)\n* [Thymeleaf](https://www.thymeleaf.org/)\n* [Testcontainers](https://www.testcontainers.org/)\n* [ArchUnit](https://www.archunit.org/)\n* [Jib](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin)\n* [Gradle](https://gradle.org/)\n* [JUnit 5](https://junit.org/junit5/)\n* [SonarQube](https://www.sonarqube.org/)\n* [JaCoCo](https://docs.gradle.org/current/userguide/jacoco_plugin.html)\n* [GH Actions](https://github.com/features/actions)\n* [DockerCompose](https://docs.docker.com/compose/)\n* [Kubernetes](https://kubernetes.io/)\n* [Helm Charts](https://helm.sh/)\n* [Skaffold](https://skaffold.dev/)\n* [ELK](https://www.elastic.co/what-is/elk-stack)\n* [Prometheus](https://prometheus.io/)\n* [Grafana](https://grafana.com/)\n* [Loki](https://grafana.com/oss/loki/)\n* [Gatling](https://gatling.io/) Performance Tests\n* [PlayWright](https://playwright.dev/) E2E Tests\n\n## How to run?\n\n### Run application locally\n\n`$ ./gradlew bootRun`\n\n### Run application using docker-compose\n\n`$ ./run.sh start_app`\n\n### Deploying on kubernetes\n\n```shell\n$ cd deployment\n$ ./kind/kind-cluster.sh create\n$ ./run.sh k8sdeploy\n$ curl http://localhost:30090/actuator\n$ curl http://localhost/actuator\n$ ./run.sh k8sundeploy\n$ ./kind/kind-cluster.sh destroy\n```\n\n### Development using Skaffold\n\n```shell\n$ skaffold dev --port-forward --skip-tests=true\n$ curl http://localhost:8080/actuator\n```\n### Run Gatling Tests\n\n`$ ./gradlew gatlingRun`\n\n### Run PlayWright E2E Tests\n\n```\n$ ./gradlew :playwright-e2e-tests:e2eTest\n$ export CONFIG_FILE=dev.json\n$ ./gradlew :playwright-e2e-tests:e2eTest\n```\n\n## ELK Stack\n* Start ELK stack using `$ ./run.sh start_elk`\n* Go to http://localhost:5601/\n* Analytics -\u003e Discover -\u003e create a data view -\u003e Name: \"devzone\", Index pattern: \"devzone*\", Timestamp field: \"@timestamp\"\n\n**Note:** Logstash is configured to read log files, so in order to initialize the index make few requests to devzone application to generate some logs.\n\n## Monitoring\n\n* Start Prometheus, Grafana, Loki using `$ ./run.sh start_monitoring`\n* Few Dashboards are already pre-configured to show SpringBoot application Metrics\n\n### Loki - Log management\n* Navigate to http://localhost:3000/datasources\n* Click on Add datasource -\u003e Select Loki\n* Enter URL as http://loki:3100 (Host \"loki\" is based on name given to loki container in docker-compose-monitoring.yml file)\n* Click on Save \u0026 Test\n* Click on Explore in the Left Nav and Select Loki\n* In Log browser input text enter `{job=\"devzone\"}`\n\n## Important Links\n\n* Application: http://localhost:8080\n* Prometheus: http://localhost:9090\n* Grafana: http://localhost:3000\n* Kibana: http://localhost:5601/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsivaprasadreddy%2Fdevzone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsivaprasadreddy%2Fdevzone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsivaprasadreddy%2Fdevzone/lists"}