Skip to content

Majsan-T/CuriousPaths

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌟 CuriousPaths

En modern bloggplattform byggd med Flask för webbutveckling, programmering och livslångt lärande.

Python Flask License


📖 Om projektet

CuriousPaths är en blogg som kombinerar kraftfull funktionalitet med en clean, användarvänlig design. Projektet utvecklades för att skapa en personlig kunskapsplattform för att dela tutorials, guider och insikter inom webbutveckling och programmering.

✨ Huvudfunktioner

  • 📝 Blogg med rich text-editor (Quill.js)
  • 🔐 Komplett autentiseringssystem med rollbaserad åtkomstkontroll
  • 🎨 Kategorier & taggar för organisering av innehåll
  • 💬 Kommentarssystem med godkännandefunktion
  • 🖼️ Media-bibliotek med bildhantering och återanvändning
  • 🔍 Full-text sökning med filter på kategori och datum
  • 📊 Admin-panel med statistik och bulk-åtgärder
  • 🎯 SEO-optimerad med meta tags, sitemap.xml och RSS-feed
  • 📱 Responsiv design med custom färgschema
  • 🔒 Säkerhetsfokus med rate limiting och starka lösenordskrav

🚀 Teknisk stack

Backend

  • Flask 3.0 - Webbramverk
  • SQLAlchemy 2.0 - ORM
  • Flask-Login - Sessionshantering
  • Flask-WTF - Formulärhantering
  • Flask-Migrate - Databasmigrering
  • Flask-Limiter - Rate limiting
  • Pillow - Bildbehandling (WebP-komprimering)

Frontend

  • Bootstrap 5.3 - UI-ramverk
  • Quill.js - Rich text-editor
  • Bootstrap Icons - Ikonbibliotek
  • Custom CSS - Personligt färgschema

Databas

  • SQLite (development)
  • MySQL/MariaDB (production)

📦 Installation

Förutsättningar

  • Python 3.13+
  • pip
  • virtualenv (rekommenderas)

Steg-för-steg

  1. Klona repository
git clone https://github.com/Majsan-T/curiouspaths.git
cd curiouspaths
  1. Skapa virtuell miljö
python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows
  1. Installera dependencies
pip install -r requirements.txt
  1. Konfigurera environment variables
cp .env.example .env
# Redigera .env med dina värden
  1. Initiera databas
flask db init
flask db migrate -m "Initial migration"
flask db upgrade
  1. Seed initial data
flask init-db
flask seed-categories
flask seed-tags
flask create-admin
  1. Starta utvecklingsserver
flask run

Öppna http://127.0.0.1:5000 i webbläsaren.


🎯 Användning

Skapa admin-användare

flask create-admin

Följ instruktionerna för att ange email, namn och lösenord.

Seed-kommandon

# Skapa standardkategorier
flask seed-categories

# Skapa standardtaggar
flask seed-tags

# Publicera alla utkast
flask publish-all

Admin-panel

Logga in med admin-kontot och navigera till /admin för att:

  • Hantera blogginlägg (skapa, redigera, radera)
  • Hantera kategorier och taggar
  • Moderera kommentarer
  • Hantera användare
  • Se statistik
  • Administrera media-bibliotek

📂 Projektstruktur

CuriousPaths/
├── app/
│   ├── init.py              # App factory
│   ├── models.py            # Databasmodeller
│   ├── extensions.py        # Flask-extensions
│   ├── commands.py          # CLI-kommandon
│   ├── auth/                # Autentisering
│   ├── blog/                # Bloggfunktionalitet
│   ├── admin/               # Admin-panel
│   ├── pages/               # Statiska sidor
│   ├── utils/               # Hjälpfunktioner
│   ├── templates/           # Jinja2-templates
│   └── static/              # CSS, JS, bilder
├── migrations/              # Databasmigrationer
├── instance/                # Instansspecifik data
├── config.py                # Konfiguration
├── run.py                   # Development entry point
├── wsgi.py                  # Production entry point
├── requirements.txt         # Python-dependencies
├── .env.example             # Environment variables template
└── README.md                # Denna fil


🔒 Säkerhetsfunktioner

  • Rate limiting - Begränsar inloggningsförsök och registreringar
  • Starka lösenordskrav - Minst 8 tecken, stor/liten bokstav, siffror
  • Security headers - CSP, X-Frame-Options, XSS-Protection
  • CSRF-skydd - Flask-WTF CSRF-tokens
  • Password hashing - Werkzeug PBKDF2
  • Session-säkerhet - HTTP-only cookies, SameSite

🌐 Deployment

Steg-för-steg

Se DEPLOYMENT.md för detaljerad deployment-guide.

Snabbversion:

  1. Skapa MySQL-databas
  2. Ladda upp filer via FTP/SFTP
  3. Konfigurera .env för produktion
  4. Installera dependencies: pip install -r requirements.txt
  5. Kör migrations: flask db upgrade
  6. Skapa admin: flask create-admin
  7. Aktivera HTTPS (Let's Encrypt)

📊 SEO-funktioner

  • Meta tags - Open Graph, Twitter Cards
  • Sitemap.xml - Dynamisk sitemap
  • robots.txt - Sökmotorinstruktioner
  • RSS feed - /rss eller /feed
  • Kanoniska URLs - Förhindrar duplicate content
  • Structured data - Schema.org markup (planerat)

🎨 Anpassning

Färgschema

Redigera app/static/css/style.css:

:root {
    --primary-color: #d4915c;      /* Orange/terrakotta */
    --secondary-color: #4a7c59;    /* Skogsgrön */
    --accent-warm: #e8a574;        /* Ljus orange */
    /* ... */
}

Logotyp och favicon

Lägg dina bilder i app/static/images/:

  • favicon.ico (16x16, 32x32)
  • favicon.png (192x192)
  • og-default.png (1200x630) - Open Graph

🧪 Testing

# Kör tester (när test-suite är implementerad)
pytest

# Coverage report
pytest --cov=app

📈 Roadmap

Version 1.1 (Planerat)

  • Dark mode toggle
  • Newsletter-funktionalitet
  • Email-verifiering vid registrering
  • 2FA-autentisering

Version 1.2 (Framtida)

  • Post-versionshantering
  • Multi-språkstöd (i18n)
  • Avancerad analytics
  • API-endpoints
  • GraphQL-support

🤝 Bidra

Contributions är välkomna! Om du vill bidra:

  1. Forka projektet
  2. Skapa en feature branch (git checkout -b feature/AmazingFeature)
  3. Commit dina ändringar (git commit -m 'Add some AmazingFeature')
  4. Push till branchen (git push origin feature/AmazingFeature)
  5. Öppna en Pull Request

Utvecklingsguide

# Sätt upp development environment
pip install -r requirements-dev.txt

# Kör linting
flake8 app/

# Formatera kod
black app/

📝 Licens

Detta projekt är licensierat under MIT License - se LICENSE filen för detaljer.


👤 Författare

Maria Tingvall


🙏 Acknowledgments


📸 Screenshots

Startsida

Startsida

Blogginlägg

Blogginlägg

Admin-panel

Admin

Media-bibliotek

Media


💡 Support

Om du har frågor eller stöter på problem:

  1. Kolla DEPLOYMENT.md för deployment-hjälp
  2. Öppna ett Issue
  3. Kontakta via email: maria@tingvall.nu

Byggt med ❤️ och ☕ av Maria Tingvall

About

CuriousPaths är en fullfjädrad bloggplattform som kombinerar kraftfull funktionalitet med en clean, användarvänlig design. Projektet utvecklades för att skapa en personlig kunskapsplattform för att dela tutorials, guider och insikter inom webbutveckling och programmering.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors