Projektstatus - jakobher/mindtracker GitHub Wiki
MindTracker - Projektstatus
Datum: 2025-05-28 Driftsatt på: https://mindtracker.se
Projektöversikt
MindTracker är en webbapplikation för att hjälpa med social ångest genom exponeringsövningar. Jag har byggt den med Node.js, Express, MongoDB och kör den med Docker på DigitalOcean.
Vad som är implementerat
Användarhantering
Grundläggande användarfunktioner fungerar:
- Registrering och inloggning
- Säker sessionshantering med bcrypt
- Möjlighet att ta bort sitt konto
- CSRF-skydd på formulär
Exponeringsmodul
Detta är huvudfunktionen i appen:
Exponeringsstege:
- Skapa mallar för övningar med svårighetsgrad 1-10
- Organisera mallarna efter svårighetsgrad (lätt, medel, svår)
- Redigera och ta bort mallar
- Skapa konkreta övningar från mallarna
Exponeringsövningar:
- Planera övningar med plats, datum och förväntad ångestnivå
- Markera övningar som genomförda
- Registrera faktisk ångestnivå och reflektioner
- Filtrera och sortera övningar efter status och datum
- Redigera och ta bort övningar
Framstegsspårning
En enkel visualisering med ApexCharts som visar:
- Genomsnittlig ångestnivå över tid
- Jämförelse mellan förväntad och faktisk ångest
- Grundläggande statistik över genomförda övningar
Tekniska lösningar
- Docker-containers för app, databas och NGINX
- HTTPS med Let's Encrypt
- Deployment på DigitalOcean VPS
- Publikt GitHub-repo för koddelning
Vad som inte blev gjort
Tankeutmanare-modulen
Jag planerade en modul för att logga och utmana negativa tankar, men hann inte implementera den. Tidsmässigt prioriterade jag exponeringsmodulen eftersom det är kärnfunktionen.
Lösenordsåterställning
Inte implementerat eftersom det kräver e-postintegration och inte var kritiskt för grundfunktionen.
Optimeringar som inte hinns med
- Tailwind CSS körs via CDN vilket inte är optimalt för produktion
- Sessions lagras i minnet istället för databas
- Saknar vissa säkerhetsfunktioner som rate limiting
Var jag befinner mig i processen
Applikationen fungerar som tänkt för sitt syfte - att hjälpa med exponeringsövningar för social ångest.
Teststatus
Manuella testfall
Jag har gjort tre grundliga testrundor:
Testrapport 1: 15 av 16 testfall passerade. Hittade ett problem med lösenordslängd-validering som jag fixade.
Testrapport 2: 25 av 29 testfall passerade.
Testrapport 3: 34 av 34 testfall passerade
Automatiserade tester
Satte upp Jest och skrev tester för lösenordsvalidering. Inte så många tester men bra lärdom att testa detta.
Användartester
Testade med några kurskamrater som gav feedback på användarvänligheten. Hjälpte mig hitta några förbättringsområden.
Kända problem och förbättringsområden
Användarupplevelse
- Framstegsspårningen visar missvisande "försämring" när användaren går över till svårare övningar, eftersom genomsnittet höjs av de nya utmaningarna
- Lösning: Separata diagram per svårighetsgrad (1-4, 5-7, 8-10) för att visa progression inom varje nivå
- Detta skulle ge en tydligare bild av både färdighetsbyggande och modbyggande
Prestanda
- Tailwind CSS via CDN - ej optimalt för produktion.
Säkerhet
- Grundläggande säkerhet finns men skulle kunna förbättras
- Saknar rate limiting för inloggningsförsök
Skalbarhet
- Sessions i minnet fungerar inte för många användare
- MongoDB behöver indexering för större datavolymer
Driftsättning
Applikationen körs på:
- DigitalOcean VPS med Ubuntu
- Docker Compose för containerhantering
- NGINX som reverse proxy
- Let's Encrypt för HTTPS
- Egen domän (mindtracker.se)
Reflektion
Jag är nöjd med vad jag fick gjort inom tidsramen. Exponeringsmodulen blev som jag tänkte mig och användarvänlig. Det finns självklart saker som kan förbättras men för ett kursprojekt tycker jag det blev bra.
Det mest lärorika var att sätta upp hela deployment-kedjan från utveckling till produktion. Att få HTTPS att fungera med Let's Encrypt och hantera DNS var utmanande men givande.
Hade jag haft mer tid skulle jag ha fokuserat på tankeutmanare-modulen och prestandaoptimering, men kärnfunktionen fungerar som den ska.