Initial commit: TimeReg Flutter app med Firebase backend

- Opprettet Flutter-prosjekt med alle nødvendige avhengigheter
- Implementert datamodeller (User, TimeRegistration, TariffProfile, Deviation, AuditLog)
- Implementert tjenester (AuthService, TimeService)
- Implementert Riverpod providers for state management
- Opprettet autentiseringsskjermer (login, signup, reset password)
- Opprettet hjemmeskjerm med timer-funksjonalitet
- Opprettet placeholder-skjermer for historikk, rapporter og profil
- Lagt til norsk dokumentasjon i README
This commit is contained in:
steinhelge
2025-11-24 20:52:27 +01:00
commit c829f78984
148 changed files with 8462 additions and 0 deletions
+144
View File
@@ -0,0 +1,144 @@
# TimeReg
TimeReg er en mobilapplikasjon for registrering av arbeidstid med automatisk kontroll mot Arbeidsmiljøloven (AML) og tariffavtaler.
## Funksjoner
- ✅ Registrering av arbeidstid (start/stopp timer og manuell registrering)
- ✅ Automatisk vurdering mot AML-bestemmelser
- ✅ Støtte for tariffavtaler med avvik fra hovedbestemmelsene
- ✅ Rollebasert tilgang (Ansatt, Administrator, Systemadministrator)
- ✅ Rapportering og eksport
- ✅ Offline-støtte
- ✅ Push-varsler ved avvik
## Teknologi
- **Frontend**: Flutter (iOS & Android)
- **Backend**: Firebase
- Cloud Firestore (database)
- Firebase Authentication (autentisering)
- Cloud Functions (regelmotor)
- Cloud Messaging (varsler)
- **State Management**: Riverpod
- **Offline Storage**: Hive
## Kom i gang
### Forutsetninger
- Flutter SDK (3.9.2 eller nyere)
- Firebase-prosjekt
- Dart SDK
### Installasjon
1. Klon repositoriet:
```bash
git clone https://gitea.theriise.net/steinhelge/TimeReg.git
cd TimeReg
```
2. Installer avhengigheter:
```bash
flutter pub get
```
3. Konfigurer Firebase:
- Opprett et Firebase-prosjekt på https://console.firebase.google.com
- Last ned `google-services.json` (Android) og `GoogleService-Info.plist` (iOS)
- Plasser filene i riktige mapper:
- Android: `android/app/google-services.json`
- iOS: `ios/Runner/GoogleService-Info.plist`
4. Kjør appen:
```bash
flutter run
```
## Firebase-oppsett
### Firestore Database
Opprett følgende samlinger i Firestore:
- `users` - Brukerdata
- `time_registrations` - Timeregistreringer
- `tariff_profiles` - Tariffprofiler
- `deviations` - Avvik fra AML/tariff
- `audit_logs` - Endringslogg
### Firestore Security Rules
Kopier innholdet fra `firestore.rules` til Firebase Console.
### Cloud Functions
Cloud Functions for regelmotoren ligger i `functions/`-mappen. Deploy med:
```bash
cd functions
npm install
firebase deploy --only functions
```
## Prosjektstruktur
```
lib/
├── models/ # Datamodeller
├── services/ # Tjenester (auth, time, etc.)
├── providers/ # Riverpod providers
├── screens/ # UI-skjermer
│ ├── auth/ # Innlogging, registrering
│ ├── home/ # Hjem-skjerm med timer
│ ├── history/ # Historikk
│ ├── reports/ # Rapporter
│ ├── admin/ # Admin-funksjoner
│ └── profile/ # Brukerprofil
├── widgets/ # Gjenbrukbare widgets
└── utils/ # Hjelpefunksjoner
```
## Brukerroller
### Ansatt
- Registrere egen arbeidstid
- Se egne rapporter og avvik
- Motta varsler om avvik
### Administrator
- Administrere brukere
- Sette tariffprofiler
- Se aggregert rapportering
- Korrigere timeregistreringer
### Systemadministrator
- Full tilgang til systemet
- Konfigurere systemnivå-innstillinger
- Se audit logs
## Tariffprofiler
Systemet støtter følgende standardprofiler:
1. **Ingen tariffavtale (AML Standard)**
- Maks 9 timer per dag
- Maks 40 timer per uke
- Min 11 timer daglig hvile
- Min 35 timer ukentlig hvile
2. **Tariffavtale A**
- Maks 10 timer per dag
- Maks 48 timer per uke
- Gjennomsnittsberegning over 8 uker
3. **Tilpasset profil**
- Konfigurerbar av administrator
## Lisens
Dette prosjektet er privat og kun for intern bruk.
## Kontakt
For spørsmål eller support, kontakt administrator.