<div align="center">
  <h1 align="center">TTime</h3>
  <p align="center">Time Tracking Platform</p>
</div>

---

## Introduction

A time tracking platform that allows users to track their time and generate reports.

## Build Instructions

The full build instruction is available [here](./BUILD.md).  
For developers specializing in the **backend**, there is documentation [here](./backend/README.md).  
For developers specializing in the **frontend**, there is documentation [here](./frontend/README.md).  

Dependencies:

- [Go](https://go.dev/)
- [Make](https://www.gnu.org/software/make/)
- [Node & npm](https://nodejs.org/en/)
- [Podman](https://podman.io/) / [Docker](https://www.docker.com/)
- [Just](https://github.com/casey/just) (Optional)

If you're on [Fedora](https://fedoraproject.org/)/Red Hat derivatives, this is as simple as:

```bash
sudo dnf install -y make golang nodejs podman just
```

Any [Debian](https://www.debian.org/)/[Ubuntu](https://ubuntu.com/desktop)-based distro:

```bash
sudo apt install -y make golang nodejs podman
sudo apt install -y just # For Ubuntu
```

[Arch Linux](https://archlinux.org/) & derivatives:

```bash
sudo pacman -S make go nodejs npm podman just
```

[MacOS](https://www.apple.com/macos/): (Requires [Homebrew](https://brew.sh/)) (Untested)

```bash
brew install make go nodejs npm podman just
```

[Windows](https://www.microsoft.com/en-us/windows):  
Unfortunately, [Windows Subsystem for Linux (WSL)](https://docs.microsoft.com/en-us/windows/wsl/install) is required for the build process. Running any form of containerized workload on windows is currently unsupported. More info [here](https://podman.io/docs/installation#windows). From my understanding, WSL also requires virtualization extensions to be enabled in the BIOS, which is not always the case for all users.

It is possible to run the code on Windows, but this will be without the use of containers or any other build tools that are not available on Windows.
You will also eventually need to install the database server, which will not be containerized.

My recommendation would be to make WSL your primary development environment if you are on Windows. This will drop you into an Ubuntu environment, in which you can follow the instructions above.

You should consult the [WSL documentation](https://docs.microsoft.com/en-us/windows/wsl/install), but for any recent version of windows, installation essentially boils down to running the following command in **PowerShell as an administrator**:

```powershell
wsl --install -d Ubuntu-22.04 # To get a somewhat recent version of Go
```

If you get any errors related to virtualization, you will need to enable virtualization in the BIOS. This is a common issue, and you can find a guide for your specific motherboard online. This is a one-time operation and will not affect your windows installation. This setting is usually called "VT-x" or "AMD-V" and is usually found in the CPU settings. If you can't find it, shoot me a message and I'll find it for you.

If you're **still dead set** on using a vanilla Windows environment, you will need the following:

- [Go](https://go.dev/)
- [Node & npm](https://nodejs.org/en/)
- [MariaDB](https://mariadb.org/) / [MySQL](https://www.mysql.com/) / [PostgreSQL](https://www.postgresql.org/) (This is undecided so far)

With some grit and determination, you can get it to work. It's not recommended, but I (Imbus) will try to help you.
