Course Dashboard (Kokpit kursu? :D)

Celem projektu będzie utworzenie aplikacji, która będzie przechowywać i wyświetlać dane związane z naszym kursem C++.

Kompilacja i uruchomienie

Build Status

Kompilacja

mkdir build
cd build
cmake ..
make

Uruchomienie testów

build/CourseDashboard-ut

Uruchomienie programu

build/CourseDashboard

Słownik

  • User Story - wymaganie użytkownika.
  • Użytkownik - osoba korzystająca z aplikacji (trener lub kursant).
  • Dane kursanów - imię, nick na Discordzie, link do GitHuba, link do Firecode, grupa.

User Stories

  1. Jako trener chciałbym móc przeglądać, dodawać, usuwać i edytować dane kursantów
  2. Jako trener chcę, aby wszelkie informacje były zapisywane w pliku tekstowym i odczytywane z niego
  3. Jako użytkownik chcę móc zalogować się do aplikacji z użyciem adresu e-mail i hasła
  4. Jako użytkownik aplikacji nie chcę, aby moje hasło było gdziekolwiek dostępne i możliwe do odszyfrowania
  5. Jako użytkownik chciałbym, aby plik z danymi do programu był dostępny online i aby aplikacja pobierała z niego dane.
  6. Jako kursant chciałbym móc zaznaczać swoje przyszłe nieobecności lub odróbki w innej grupie
  7. Jako trener chciałbym móc przeglądać tabelę obecności kursantów
  8. Jako trener chciałbym, aby nazwy i daty lekcji były odczytywane z pliku konfiguracyjnego json
  9. Jako trener chciałbym móc wpisywać punkty każdemu kursantowi za poszczególne lekcje i inne aktywności
  10. Jako kursant chciałbym móc przeglądać swoją punktację za poszczególne lekcje i inne aktywności
  11. Jako użytkownik, chciałbym domyślnie widzieć tabelę rankingową wszystkich kursantów.
  12. Jako kursant chciałbym, aby moje dane były chronione, więc nikt oprócz trenera i mnie nie może edytować moich danych.
  13. Jako trener chciałbym, aby punkty za lekcje można było odczytać z pliku Markdown
  14. Jako użytkownik chciałbym, aby aplikacja była dostępna przez przeglądarkę internetową

Zasady formatowania kodu

  1. Nazwy klas i typów UpperCamelCase (PascalCase). Nazwy zmiennych i funkcji lowerCamelCase.

  2. Nazwy klas i zmiennych muszą zawierać rzeczownik. Nazwy funkcji muszą zawierać czasownik.

  3. Głębokość wcięć to 4 spacje.

  4. Spacje przed i po operatorach arytmetycznych, spacje po przecinku.

  5. Dopuszczamy jednolinijkowe funkcje, jeśli składają się tylko z jednej instrukcji.

    int doSth(int value) { return doSthElse(value); }
  6. Nie dopuszczamy jednolinijkowych instrukcji warunkowych lub pętli:

    if (condition) return 42;  // bad

    Akcja zawsze musi być w kolejnej linijce, aby jej nie przeoczyć:

    if (condition)  // good
        return 42;
  7. Reszta do ustalenia przez was wspólnie.

    1. Braces

      void f()
      {
          dosth();
      }
      // or
      void f() {
          dosth();
      }
    2. Left, right or center references and pointers

      int b = 42;
      int& i = b;  // left
      int &i = b;  // right
      int & i = b;  // center