TechBuzz
TechBuzz is a place to share the interesting tech news such as blog posts, videos, release news etc.
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
-
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 -
Install Docker
Follow https://docs.docker.com/engine/install/ for installing Docker for your OS.
HOW TO?
Run Unit / Integration Tests
Format code
$ ./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:
$ ./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
- App: http://localhost:8080/
- MailHog: http://localhost:8025/
Run PlayWright E2E Tests
Make sure the application is running and configure correct values in src/test/resources/config.json file.
Run Gatling Tests
Using Taskfile for running various tasks
Task is a CLI utility to automate running common tasks.
$ 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.