Skip to content

Tbusk/problem-tracker

Repository files navigation

Problem Tracker

This is a sample competitive programming and interview problem utility microservices monorepo allowing users to keep track of problems they have solved, what platform, what language, how quick, when, how often, and to get notifications of what they should work on, their activity (daily, weekly, monthly, yearly, etc.), and anything else that comes to mind when building it.

Setup

Config Server:

This server is responsible for managing the configuration for microservices and servers in the application.

API Gateway:

This is responsible for authentication via JWT and routing requests to their intended microservices.

Discovery Service:

This is responsible for registering and discovering microservices in the application.

Microservices:

This microservice is responsible for managing problems and their associated data.

This microservice is responsible for managing user accounts and their associated data.

This microservice is responsible for generating reports and analytics based on user data related to problems and user activity.

  • Report Service [Later]

This microservice is responsible for generating recommendations based on user activity and goals.

  • Recommendation Service [Later]

Databases:

This database is responsible for storing data related to problems, users, and user activity.

  • Oracle DB

Prerequisites

  • Java 21
  • Docker
  • Docker Compose

Getting Started

To get started:

  1. Clone the repository.
  2. Navigate to development
  3. Run docker compose up -d database to bootstrap the database. The database will be set up automatically, and be ready to use in less than a minute.

Development with Docker

To get started:

  1. Run docker compose up -d to get the remaining services up

Development

To get started:

  1. Head to config server, start it, and review the configuration files and adjustdock as needed in the resources/config directory.
  2. Head to service-discovery and start it.
  3. Head to problem-gateway and start it. Send your requests through this with the service name as a prefix.
  4. Head to each of the microservices (problem-service, account-service) and start them.

Agenda

  • Move authentication from gateway to a new authentication microservice
  • Finish implementing and setting up the authentication microservice
  • Get user problem fetching set up
  • Test existing functionality more
  • Expand problem service functionality

Why Build This?

Currently, I keep track of what problem's I've solved, when, and how many times. I'd like to expand this, and make it easier for me to track so I can keep up to date and not miss out on any categories or forget how to solve a particular problem.

Additionally, this is an exploratory project for me to fill in some gaps in my experience, such as:

  • Microservices
  • Oracle DB
  • UI Development, specifically try out a few different kinds, like TUI or Angular
  • Kubernetes
  • Cloud Providers like Azure or areas in cloud providers that I lack a lot of experience, such as GCP and AWS with EKS
  • Jenkins build system
  • Testing, specifically with UI, full system, load, stress, etc.

License

This project is licensed under the MIT License.

About

A competitive programming and interview problem tracking utility

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages