- Popis projektu
- Použité technologie
- Instalace
- Spuštění aplikace
- Testování
- Seedy
- Struktura modelů
- Funkcionalita
- Další poznámky
Tato aplikace slouží ke správě úkolů v projektech. Umožňuje uživatelům přihlašování, vytváření projektů, úkolů a tagů, správu svých dat a jejich filtrování. Aplikace využívá server-side rendering pomocí Ruby on Rails.
- Ruby on Rails (poslední stabilní verze)
- PostgreSQL (relační databáze)
- ActiveRecord (ORM v Rails)
- Devise (autentizace)
- Simple Form (generování formulářů)
- Pagy (paginace)
- Bootstrap (frontend framework)
- RSpec (testování)
- FactoryBot (vytváření testovacích dat)
- Bullet (kontrola N+1 dotazů)
- Slim & ERB (šablony pro zobrazení stránek)
Nejprve si připravte prostředí:
# Naklonování repozitáře
git clone https://github.com/bibipus/task_management.git
cd task-management-app
# Instalace závislostí
bundle install
# Nastavení databáze
rails db:create
rails db:migrateAplikaci můžete spustit pomocí:
rails serverAplikace bude dostupná na http://localhost:3000/
Pro spuštění testů použijte:
rspecPro naplnění databáze testovacími daty spusťte:
rails db:seedAplikace obsahuje následující modely:
- User – uživatelé spravují své projekty, úkoly a tagy
- Project – obsahuje úkoly, patří jednomu uživateli
- Task – úkoly patří projektu (nebo žádnému) a uživateli, mohou mít tagy
- Tag – může být přiřazen více úkolům, patří jednomu uživateli
Vztahy mezi modely:
- User 1:N Project
- User 1:N Task
- User 1:N Tag
- Project 1:N Task
- Task M:N Tag (realizováno přes
has_many :through)
- Registrace, přihlášení a správa účtu přes Devise
- Každý uživatel vidí pouze své projekty, úkoly a tagy
- Vytváření, úprava a mazání projektů
- Při smazání projektu se smažou všechny úkoly
- Vytváření, úprava a mazání úkolů
- Přiřazení úkolů k projektům a tagům
- Označení úkolu jako hotový/nehotový
- Možnost filtrování úkolů podle stavu
- Možnost vyhledávání v úkolech, projektech a tagách
- Vytváření a mazání tagů
- Při smazání tagu se neodstraní úkoly, pouze jejich vazba na daný tag
- Paginace seznamů pomocí
Pagy - Podpora vyhledávání v názvech úkolů, projektů a tagů
- UI přeloženo do češtiny pomocí Rails I18n
- Použití Turbo pro optimalizaci
- Aplikace využívá Rails migrace pro správu databázových schémat
- Validace jsou definovány na úrovni modelů
- Použita strategie mazání závislých objektů:
- Smazání uživatele → odstraní jeho projekty, úkoly a tagy
- Smazání projektu → odstraní všechny jeho úkoly
- Smazání tagu → neovlivní úkoly, pouze se odstraní vazba
- Optimalizace dotazů pomocí gemu
Bullet