Skip to content

B2elks/smsdiary

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors