Skip to content

Repository files navigation

SMSDiary

Dokumentera barnens liv via SMS. En enkel dagbok där hela familjen kan bidra med minnen genom att skicka SMS.

Funktioner

  • SMS-baserad inmatning - Skicka ett SMS när barnet säger något roligt eller gör något minnesvärt
  • Hela familjen kan delta - Bjud in mor- och farföräldrar, de behöver ingen app
  • Magic link-inloggning - Logga in säkert via SMS, inga lösenord att komma ihåg
  • Flera barn - Varje barn har sitt eget telefonnummer
  • Påminnelser - Föräldrar kan få påminnelser att dokumentera (observers får inga)
  • Årssammanfattningar - Se "Denna dag förra året" och bläddra per år
  • Exportera data - Ladda ner allt som CSV eller JSON

Tech Stack

  • Backend: Python + FastAPI
  • Databas: SQLite
  • SMS: 46elks API
  • Frontend: Jinja2 templates + vanilla CSS

Installation

1. Klona repot

git clone https://github.com/yourusername/smsdiary.git
cd smsdiary

2. Skapa virtuell miljö

python3 -m venv venv
source venv/bin/activate  # På Windows: venv\Scripts\activate
pip install -r requirements.txt

3. Konfigurera miljövariabler

cp .env.example .env
# Redigera .env med dina 46elks API-nycklar

4. Starta servern

uvicorn main:app --host 0.0.0.0 --port 8081

Besök http://localhost:8081

46elks Setup

  1. Skapa ett konto på 46elks.com
  2. Köp ett virtuellt telefonnummer
  3. Ställ in webhook-URL för numret: https://yourdomain.com/api/sms/incoming
  4. Kopiera API-nycklarna till din .env-fil

Admin

Använd admin.py för att hantera barn och användare via kommandoraden:

source venv/bin/activate

# Lägg till ett barn
python admin.py add-child "Barnets namn" "+46766861234" "2022-05-15"

# Lägg till en användare
python admin.py add-user "Förälderns namn" "+46701234567"

# Koppla användare till barn
python admin.py link "+46701234567" "+46766861234" parent

# Lista allt
python admin.py list

Eller använd webbgränssnittet på /admin efter inloggning.

Deployment

Systemd Service

[Unit]
Description=SMSDiary
After=network.target

[Service]
Type=simple
User=youruser
WorkingDirectory=/path/to/smsdiary
Environment=PATH=/path/to/smsdiary/venv/bin
EnvironmentFile=/path/to/smsdiary/.env
ExecStart=/path/to/smsdiary/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8081
Restart=always

[Install]
WantedBy=multi-user.target

Nginx Reverse Proxy

server {
    listen 80;
    server_name diary.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

API Endpoints

Endpoint Metod Beskrivning
/ GET Landningssida / Dagbok
/login GET Inloggningssida
/auth/request POST Begär magic link
/auth/verify/{token} GET Verifiera magic link
/admin GET Administrera barn och användare
/api/sms/incoming POST Webhook för inkommande SMS
/export/csv GET Exportera data som CSV
/export/json GET Exportera data som JSON

Licens

MIT

About

Keep track of your kids, funny things they say, theet they loose, birthdays they atend etc.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages