Skip to content
This repository has been archived by the owner on Nov 9, 2022. It is now read-only.
/ quii Public archive

Quii: The project management tool for indie devs. (Not a real app, made for learning)

Notifications You must be signed in to change notification settings

burntcarrot/quii

Repository files navigation

quii

Table of Contents

Tech Stack Unit Testing API Testing API Docs Continuous Integration Monitoring Logging

Tech Stack

Quii is built with:

  • Go
  • Echo
  • Redis
  • GORM
  • Mockery
  • Testify
  • Insomnia
  • GitHub Actions
  • Prometheus
  • Grafana
  • Loki
  • Promtail
  • Zap
  • Lumberjack

Unit Testing

Tests through mocks generated by Mockery:

=== RUN   TestCreateProject
=== RUN   TestCreateProject/Valid_Project_Creation
=== RUN   TestCreateProject/Invalid_Project_Creation
--- PASS: TestCreateProject (0.00s)
    --- PASS: TestCreateProject/Valid_Project_Creation (0.00s)
    --- PASS: TestCreateProject/Invalid_Project_Creation (0.00s)
=== RUN   TestGetProjects
=== RUN   TestGetProjects/Get_Projects
--- PASS: TestGetProjects (0.00s)
    --- PASS: TestGetProjects/Get_Projects (0.00s)
=== RUN   TestGetProjectByID
=== RUN   TestGetProjectByID/Valid_Get_Project_by_Name
=== RUN   TestGetProjectByID/Invalid_Get_Project_by_Name
--- PASS: TestGetProjectByID (0.00s)
    --- PASS: TestGetProjectByID/Valid_Get_Project_by_Name (0.00s)
    --- PASS: TestGetProjectByID/Invalid_Get_Project_by_Name (0.00s)
PASS
ok      github.com/burntcarrot/quii/entity/project        0.004s
?       github.com/burntcarrot/quii/entity/project/mocks  [no test files]
=== RUN   TestCreateTask
=== RUN   TestCreateTask/Valid_Task_Creation
=== RUN   TestCreateTask/Invalid_Task_Creation
--- PASS: TestCreateTask (0.00s)
    --- PASS: TestCreateTask/Valid_Task_Creation (0.00s)
    --- PASS: TestCreateTask/Invalid_Task_Creation (0.00s)
=== RUN   TestGetTasks
=== RUN   TestGetTasks/Get_Tasks
--- PASS: TestGetTasks (0.00s)
    --- PASS: TestGetTasks/Get_Tasks (0.00s)
=== RUN   TestGetTaskByName
=== RUN   TestGetTaskByName/Valid_Get_Task_by_Name
=== RUN   TestGetTaskByName/Invalid_Get_Task_by_Name
--- PASS: TestGetTaskByName (0.00s)
    --- PASS: TestGetTaskByName/Valid_Get_Task_by_Name (0.00s)
    --- PASS: TestGetTaskByName/Invalid_Get_Task_by_Name (0.00s)
PASS
ok      github.com/burntcarrot/quii/entity/task   (cached)
?       github.com/burntcarrot/quii/entity/task/mocks     [no test files]
=== RUN   TestLogin
=== RUN   TestLogin/Valid_Login
=== RUN   TestLogin/Invalid_Login_(Empty_Email)
=== RUN   TestLogin/Invalid_Login_(Empty_Password)
--- PASS: TestLogin (0.00s)
    --- PASS: TestLogin/Valid_Login (0.00s)
    --- PASS: TestLogin/Invalid_Login_(Empty_Email) (0.00s)
    --- PASS: TestLogin/Invalid_Login_(Empty_Password) (0.00s)
=== RUN   TestRegister
=== RUN   TestRegister/Valid_Register
=== RUN   TestRegister/Invalid_Register
--- PASS: TestRegister (0.00s)
    --- PASS: TestRegister/Valid_Register (0.00s)
    --- PASS: TestRegister/Invalid_Register (0.00s)
=== RUN   TestGetByName
=== RUN   TestGetByName/Get_user_by_Name
--- PASS: TestGetByName (0.00s)
    --- PASS: TestGetByName/Get_user_by_Name (0.00s)
PASS

API Testing

API Tests can be run through Inso:

inso run test

API Docs

Powered by Insomnia and GitHub Pages: https://burntcarrot.github.io/quii

CI

Quii uses Github Actions for running multiple workflows, like:

  • Automated Testing
  • Lint Checks
  • Automatic API Documentation deployment (see API Docs)

Monitoring

Quii exports metrics through Prometheus, which are then utilized by Grafana for visualization:

Grafana Dashboard

Logging

Quii exports logs through zap and lumberjack, which is then used by promtail and Loki:

Grafana Logs

About

Quii: The project management tool for indie devs. (Not a real app, made for learning)

Resources

Stars

Watchers

Forks