Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
232 changes: 86 additions & 146 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,188 +1,128 @@
<div id="top">
# Tracker

<!-- HEADER STYLE: CLASSIC -->
<div align="center">
Tracker is a Ruby on Rails application for running team standups with clear visibility into daily progress, upcoming work, and blockers.

## Overview

# TRACKER

<em>Transforming Teams, Accelerating Success Daily</em>

<!-- BADGES -->
<img src="https://img.shields.io/github/last-commit/syntaxmage05/tracker?style=flat&logo=git&logoColor=white&color=0080ff" alt="last-commit">
<img src="https://img.shields.io/github/languages/top/syntaxmage05/tracker?style=flat&color=0080ff" alt="repo-top-language">
<img src="https://img.shields.io/github/languages/count/syntaxmage05/tracker?style=flat&color=0080ff" alt="repo-language-count">
Tracker helps teams stay aligned by combining:

<em>Built with the tools and technologies:</em>
- **Daily standup logging** with structured entries (`Did`, `Todo`, and `Blocker`).
- **Team-level views** to review member updates by day.
- **Account + role-based access** for multi-user organizations.
- **Automated reminders and recaps** using Sidekiq + Sidekiq Cron jobs.

<img src="https://img.shields.io/badge/Markdown-000000.svg?style=flat&logo=Markdown&logoColor=white" alt="Markdown">
<img src="https://img.shields.io/badge/Ruby-CC342D.svg?style=flat&logo=Ruby&logoColor=white" alt="Ruby">
<img src="https://img.shields.io/badge/JavaScript-F7DF1E.svg?style=flat&logo=JavaScript&logoColor=black" alt="JavaScript">
<img src="https://img.shields.io/badge/Docker-2496ED.svg?style=flat&logo=Docker&logoColor=white" alt="Docker">
<img src="https://img.shields.io/badge/GitHub%20Actions-2088FF.svg?style=flat&logo=GitHub-Actions&logoColor=white" alt="GitHub%20Actions">
The app is built on Rails 8 with PostgreSQL, Hotwire, and Sidekiq.

</div>
<br>
## Features

---
- Authentication and invitation flow with Devise / Devise Invitable.
- Account and team management.
- Standup creation/editing with nested task items.
- Activity feed focused on the current user’s standup history.
- Background job scheduling for reminder and recap workflows.

## Table of Contents
## Tech Stack

- [Overview](#overview)
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Usage](#usage)
- [Testing](#testing)
- [Project Structure](#project-structure)
- **Backend:** Ruby on Rails 8
- **Database:** PostgreSQL
- **Frontend:** Hotwire (Turbo + Stimulus), Tailwind CSS
- **Background Jobs:** Sidekiq + Sidekiq Cron
- **Testing:** RSpec, Factory Bot, Capybara

---
## Prerequisites

## Overview
Before running Tracker locally, install:

- Ruby (version compatible with the project’s Gemfile)
- Bundler
- PostgreSQL
- Redis (required for Sidekiq)

## Local Setup

---

## Project Structure

```sh
└── tracker/
├── .github
│ ├── dependabot.yml
│ └── workflows
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── Procfile.dev
├── README.md
├── Rakefile
├── app
│ ├── assets
│ ├── controllers
│ ├── helpers
│ ├── javascript
│ ├── jobs
│ ├── mailers
│ ├── models
│ ├── services
│ └── views
├── config
│ ├── application.rb
│ ├── boot.rb
│ ├── cable.yml
│ ├── cache.yml
│ ├── credentials.yml.enc
│ ├── database.yml
│ ├── deploy.yml
│ ├── environment.rb
│ ├── environments
│ ├── importmap.rb
│ ├── initializers
│ ├── locales
│ ├── puma.rb
│ ├── queue.yml
│ ├── recurring.yml
│ ├── routes.rb
│ └── storage.yml
├── config.ru
├── db
│ ├── cable_schema.rb
│ ├── cache_schema.rb
│ ├── migrate
│ ├── queue_schema.rb
│ ├── schema.rb
│ └── seeds.rb
├── lefthook.yml
├── lib
│ └── tasks
├── log
│ └── .keep
├── script
│ └── .keep
├── spec
│ ├── factories
│ ├── jobs
│ ├── mailers
│ ├── models
│ ├── rails_helper.rb
│ ├── requests
│ ├── services
│ ├── spec_helper.rb
│ ├── support
│ ├── system
│ └── views
└── storage
└── .keep
```

---
1. **Clone the repository**

## Getting Started
```bash
git clone https://github.com/syntaxmage05/tracker.git
cd tracker
```

### Prerequisites
2. **Install dependencies**

This project requires the following dependencies:
```bash
bundle install
```

- **Programming Language:** Ruby
- **Package Manager:** Bundler, Rake
- **Container Runtime:** Docker
3. **Prepare the database**

### Installation
```bash
bin/rails db:prepare
```

Build tracker from the source and install dependencies:
4. **Run the development environment**

1. **Clone the repository:**
```bash
bin/dev
```

```sh
❯ git clone https://github.com/syntaxmage05/tracker
```
`bin/dev` starts:

2. **Navigate to the project directory:**
- Rails web server
- Tailwind watcher
- Sidekiq worker (via `Procfile.dev`)

```sh
❯ cd tracker
```
## Useful Commands

3. **Install the dependencies:**
```bash
# Run the test suite
bundle exec rspec

**Using [docker](https://www.docker.com/):**
# Run static analysis
bin/brakeman
bin/rubocop

```sh
❯ docker build -t syntaxmage05/tracker .
# Open Sidekiq dashboard (when app is running)
# http://localhost:3000/sidekiq
```
**Using [bundler](https://www.ruby-lang.org/):**

```sh
❯ bundle install
```
## Background Jobs

### Usage
Tracker schedules recurring jobs every 15 minutes for:

Run the project with:
- Team reminder discovery (`Reminders::FindTeamsJob`)
- Team recap discovery (`Recaps::FindTeamsJob`)

**Using [docker](https://www.docker.com/):**
These schedules are configured through Sidekiq Cron during Sidekiq server startup.

```sh
docker run -it syntaxmage05/tracker .
```
**Using [bundler](https://www.ruby-lang.org/):**
## Core Routes

```sh
bundle exec ruby
```
- `/` → personal activity view
- `/t` → teams
- `/s` → standups
- `/sidekiq` → Sidekiq Web UI

### Testing
## Project Structure

Tracker uses the {RSPEC} test framework. Run the test suite with:
```text
app/
controllers/ # HTTP endpoints and request flow
models/ # Domain models (standups, tasks, teams, accounts, users)
services/ # Service objects for business workflows
views/ # ERB views and UI templates
config/
routes.rb # Route definitions
initializers/ # Framework and integration setup (Sidekiq, Devise, etc.)
spec/ # RSpec test suite
```

## Deployment

```sh
bundle exec rspec
```
The repository includes Docker and Kamal configuration files for containerized deployment workflows.

---
## Contributing

<div align="left"><a href="#top">⬆ Return</a></div>
1. Create a feature branch.
2. Make and test your changes.
3. Open a pull request with a clear summary and validation steps.

---
Loading