Skip to content

sivaprasadreddy/techbuzz

Repository files navigation

TechBuzz

TechBuzz is a place to share the interesting tech news such as blog posts, videos, release news etc.

Build Quality Gate Status Project Map

Features

  • Login with username/password
  • Register with username/password
  • Account activation by email verification
  • View posts by category with pagination
  • Create post
  • Update post
  • Delete post
  • Up/Down vote a post

Tech Stack

  • Java, SpringBoot
  • Postgres, jOOQ, FlywayDb
  • Spring Security
  • Thymeleaf, Bootstrap, jQuery
  • JUnit 5, Testcontainers

Architecture Decision Records (ADRs)

Install Prerequisites

  1. Install Java, Maven using SDKMAN

    $ curl -s "https://get.sdkman.io" | bash
    $ source "$HOME/.sdkman/bin/sdkman-init.sh"
    $ sdk version
    $ sdk env install
    $ java -version
    $ mvn --version
  2. Install Docker

    Follow https://docs.docker.com/engine/install/ for installing Docker for your OS.

HOW TO?

Run Unit / Integration Tests

$ ./mvnw verify

Format code

$ ./mvnw spotless:apply // to formatting code automatically
$ ./mvnw spotless:check // to verify the code formatting

Run application locally

If you want to start the required services (database, mail server) using docker-compose and run the application locally:

$ ./run.sh start_infra
$ ./mvnw -pl techbuzz spring-boot:run

Instead, you can simply run ./mvnw -pl techbuzz spring-boot:test-run which will automatically spin up the required services as docker containers using Testcontainers and starts the application.

Run application using docker-compose

$ ./run.sh start

Run PlayWright E2E Tests

Make sure the application is running and configure correct values in src/test/resources/config.json file.

$ ./mvnw -pl e2e-tests test -DskipTests=false

Run Gatling Tests

$ ./mvnw -pl gatling-tests gatling:test 

Using Taskfile for running various tasks

Task is a CLI utility to automate running common tasks.

$ task format
$ task test
$ task build_image
$ task start_infra
$ task stop_infra
$ task start
$ task stop_infra
$ task restart

How to contribute?

  • If you find this project interesting, fork/clone it, run the application and provide feedback.
  • If you find any bugs or have suggestions for improvement, then please file an issue.
  • Of course, Pull Requests are most welcome.

Releases

No releases published

Packages

No packages published