Home - bradleypeterson/timetracker GitHub Wiki

Cat Tracks: Time Tracker

Table of Contents

Chapter Description
Project Vocabulary Terminology and names to know for the project
Project Setup Initial project setup and information
Database Schema What does the database schema look like
Entity Framework About the ORM for connecting to the database
Angular Frontend Update Our update to angular version 9.x
Docker Documentation What is docker and how to use it
Recommended Tools Tools and IDE's that we recommend using for this project

General Project Information

  • This project is configured using .NET Core 3.1
  • We use git as our version control system
  • This project requires that your computer MUST support virtualization
  • The ORM we are using is Entity Framework Core (the standard for .NET)
    • The ORM is configured to use Code First Migrations for the database PostgreSQL
      • If you need to switch which database you are using refer to the Microsoft docs on setting up entity framework core. You should just have to change the provider (avoid this if possible as it deletes migration history).
    • Refer to the Microsoft Documentation on Migrating to update your database locally as needed
      • New migration: dotnet ef migrations add "MigrationName"
        • Generally it is a good practice to keep migrations small as it makes it easy to name them and deal with merge conflicts
      • Update command: dotnet ef database update [MigrationName]
        • If you need to go down a migration you will need to specify the version you would like to go to
        • Before developing on any branch make sure your migrations are up-to-date with your new dev branch that typically means updating the migrations to be at the same level as master before switching branches, then updating the migrations after you have switched branches.
        • As for dealing with merge conflicts in migrations, it is best to avoid them but if you must your just going to have to do a lot of research on EF Core
  • The front end is currently written using AngularJS (deprecated in 2021)
    • There is a work in progress branch refactor/update-angularjs-to-angular8 (there are also several other branches that may be branches for individual developers based on the mentioned branch) which is working on updating the entire project using angular 9 (9.x was released before the branch got merged) this branch contains the angular project for the front end. We have striven to follow general angular best practices outlined in the angular style guide
  • The project backend database is configured using docker and the .env file for providing environments variables
    • Docker-compose is configured using the docker-compose.yml file. The following commands must be ran in the same directory as the docker-compose.yml file (typically the root of the project):
      • To build the backend run docker-compose build
      • To run the backend run docker-compose up
      • To build and run the backend run docker-compose up --build
      • To disable the container run docker-compose down
      • To destroy the backend and clear data run docker-compose down -v
    • For more advanced docker configuration see the docker/docker-compose docs