Skip to content

adiSuper94/growfin-desk-demo

Repository files navigation

growfin-desk-demo

Requirements

Build a ticketing system that can

  • Accept HTTP request

  • to create a ticket

  • List all the tickets

  • List all the tickets filtered by

  • assigned agent

  • customer

  • status

  • List details of a given ticket id

  • edit details about the ticket

  • update status for the ticket (open, waiting on customer, customer responded, resolved, closed)

  • assign the ticket to an agent

  • to add response to the ticket

  • delete the ticket

  • send email to the customer when agent adds a response

  • Below is a sendgrid account credentials. You can use them or you can sign up for an email service of your choice.

  • Note: the sendgrid credentials seems to have expired. I got an error when tried it out on it's dev portal.

  • Approach: queue a message to notification exchange. And process it asynchronously.

  • Assign the ticket equally to available agents on that given day (do not overload a single agent, spread the ticket load equally)

  • Update tickets that were marked as Resolved status 30 days ago as closed status

  • Approach: Run a cron job everyday to run a batch update.

TODOs

  • TESTS 😬
  • Authentication and Authorization.
  • Multi-tenant support
    • Current db schema is for multi-tenant. Code needs to be changed.
  • Split unrelated components(eg. mailer) into a diff service

Techstack used

  • Springboot
  • jooq
  • postgres
  • RabbitMQ

About

Backend RESTish service for a ticket management app.

Resources

Stars

Watchers

Forks