Skip to content

About

Aplikacja utworzona w ramach projektu inżynierskiego.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

414 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gamification Hub

Setup

Development dependencies

Ruby 3.4.8

Sugeruję zainstalowanie Ruby przez rbenv - Ruby Version Manager.

$ rbenv install 3.4.8
$ rbenv local 3.4.8

Polecam przeczytać:

Node 25

Aplikacja korzysta z paczek javascriptowych z NPM.

Sugeruję zainstalowanie przy pomocy nvm - Node Version Manager.

Polecam przeczytać:

Postgresql

Nasza baza danych.

Tu jest poradnik jak to skonfigurować na ubuntu: Install and configure PostgreSQL

W pliku config/database.yml w developmencie oraz w testach przewiduję, że nazwa użytkownika będzie postgres, a hasło puste.

Jeżeli u Was to się będzie różnić to się zamieni plik database.yml na database.yml.example i wtedy sami sobie to doprecyzujecie.

Overmind

Jest to program który pozwala na uruchomienie wielu procesów zdefiniowanych w pliku Procfile.dev.

Instalujemy poprzez:

# Uwaga - nie jest to zależność aplikacji, dlatego tak, a nie w Gemfile
$ gem install overmind

Pierwsze uruchomienie aplikacji

Jeżeli posiadasz powyższe zależności to możesz przejść do pierwszego uruchomienia appki.

Wywołaj:

$ bin/setup [--reset] [--skip-server]

Skrypt ten:

  1. Zainstaluje zależności Ruby zdefiniowane w Gemfile.
  2. Zainstaluje zależności JavaScript i CSS zdefiniowane w package.json
  3. Przygotuje bazę danych - utworzy bazy oraz puści utworzone w międzyczasie migracje. Jeżeli wywołane z --reset to od razu wykonuje reset bazy oraz ponownie uruchamia seedy.
  4. Wyczyści logi
  5. Uruchomi aplikację o ile nie podaliśmy flagi --skip-server

Tyle jeżeli chodzi o setup.

Żeby uruchomić aplikację użyj:

$ overmind start

overmind skorzysta ze zmiennych środowiskowych z pliku .overmind.env i uruchomi procesy z Procfile.dev

Logowanie się

Bez konfiguracji dostępne jest tylko logowanie przez email. Dostępne jest 27 testowych kont - 20 studenckich, 5 nauczycielskich, 1 admin organizacji i 1 admin globalny.

Studenci

Email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Nauczyciele

Email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Admini

Email Typ
[email protected] organizacja
[email protected] globalny

Dostęp do skrzynki pocztowej

Na środowisku developmenckim emaila są wysyłane na testową skrzynkę pocztową. Przy logowaniu należy kliknąć w potwierdzający Magic Link. Na WSL istnieje problem przez który wysłane linki nie otwierają się automatycznie. Dlatego po próbie zalogowania się należy wejść na ścieżkę: http://localhost:3000/letter_opener , aby przejrzeć skrzynkę pocztową.

Podstawowa konfiguracja

Podstawa konfiguracja zawiera:

  • jedną grupę fabularną
  • rangi
  • odznaki
  • przedmioty
  • dwa szablony grup aktywności
  • dwóch nauczycieli wspomagających
  • jedenastu studentów

Właścicielem grupy fabularnej jest [email protected]. Nauczycielami w grupie są:

Konfiguracja credentiali

Credentiale służą do tego, aby w bezpieczny sposób przechowywać ukryte dane w formacie YAML w plikach konfiguracyjnych. Wszystkie wrażliwe dane, klucze itd. zarówno testowe jak i produkcyjne powinny właśnie tam być umieszczane.

W repo istnieją pliki credentials/<env>.yml.enc.example. Należy je skopiować (albo zrobi to skrypt bin/setup) i edytować w nich dane jeżeli będzie taka potrzeba.

Jeżeli w Waszym featurze zostaną dodane nowe dane do plików credentials to proszę o aktualizowanie plików .example o jakieś domyślne wartości. Nie commitujcie faktycznych kluczy API itp. do repo.

Aby edytować credentiale należy wklepać:

$ EDITOR="<nazwa-edytora>" bin/rails credentials:edit --environment <nazwa-środowiska>

Przykłady:

# musi być z flagą --wait, aby VSCode czekał aż sami zamkniemy edytowany plik
$ EDITOR="code --wait" bin/rails credentials:edit --environment development

lub

$ EDITOR="nvim" bin/rails credentials:edit --environment test

Credentiale do Usosa

Świeżo po postawieniu aplikacji nie będzie mogli skorzystać z logowania przez usos. Musicie do credentiali dopisać:

usos_uam:
  consumer_key: ...
  consumer_secret: ...
  base_url: https://usosapps.amu.edu.pl
  callback_url: http://localhost:3000/auth/uam_usos/callback

Ponieważ kluczy i secretsów nie trzymamy w repo to piszcie do Jeremiego, aby Wam wysłał :)

Testy

Unit i Integration testy

Testy są pisane w railsowych minitestach. Można uruchomić je wszystkie skryptem:

$ bundle exec rails t

lub po po prostu

$ rails t

Ogólnie to bundle exec jest raczej rekomendowane, ponieważ wtedy wywołane przez nas skrypty zawsze są uruchamiane w kontekście projektu, a nie w kontekście globalnym.

Pojedyncze testy można uruchomić mając rozszerzenie Ruby LSP do VSCode:

Run and Run in terminal

Niestety nie wiem jak w Neovimie to zrobić, @ewez43 możesz sobie dopisać jak będziesz wiedziała :D

Testy E2E

Uwaga! Jeszcze niedodane! Testy Playwright dodam nam i skonfiguruję jak będziemy zaczynać stylizować naszą appkę.

Testy end to end pisane są w Playwright. Można go uruchomić skryptem:

$ bin/playwright

Lintery

W projekcie skonfigurowane są lintery do Ruby oraz JavaScript/TypeScript:

  • Rubocop - Ruby
  • ESLint - JavaScript/TypeScript

Postarałem się o to, abyście mieli już gotowe automatyczne formatowanie, ale prawdopodobnie będziecie musieli trochę rzeczy dokonfigurować.

Na pewno potrzebujecie rozszerzeń:

Rubocop

Zasady zdefiniowane są w .rubocop.yml

Możecie w konsoli sprawdzić ile naruszeń jest w naszej aplikacji:

bundle exec rubocop

Jeżeli chcecie automatycznie poprawiać błędy to musi być z flagą -A:

bundle exec rubocop -A

ESLint

Zasady zdefiniowane są w eslint.config.mjs.

Deployment

TBD - jeszcze nie robiliśmy

About

Aplikacja utworzona w ramach projektu inżynierskiego.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages