En modern bloggplattform byggd med Flask för webbutveckling, programmering och livslångt lärande.
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.
- 📝 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
- 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)
- Bootstrap 5.3 - UI-ramverk
- Quill.js - Rich text-editor
- Bootstrap Icons - Ikonbibliotek
- Custom CSS - Personligt färgschema
- SQLite (development)
- MySQL/MariaDB (production)
- Python 3.13+
- pip
- virtualenv (rekommenderas)
- Klona repository
git clone https://github.com/Majsan-T/curiouspaths.git
cd curiouspaths- Skapa virtuell miljö
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows- Installera dependencies
pip install -r requirements.txt- Konfigurera environment variables
cp .env.example .env
# Redigera .env med dina värden- Initiera databas
flask db init
flask db migrate -m "Initial migration"
flask db upgrade- Seed initial data
flask init-db
flask seed-categories
flask seed-tags
flask create-admin- Starta utvecklingsserver
flask runÖppna http://127.0.0.1:5000 i webbläsaren.
flask create-adminFölj instruktionerna för att ange email, namn och lösenord.
# Skapa standardkategorier
flask seed-categories
# Skapa standardtaggar
flask seed-tags
# Publicera alla utkast
flask publish-allLogga 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
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
- 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
Se DEPLOYMENT.md för detaljerad deployment-guide.
Snabbversion:
- Skapa MySQL-databas
- Ladda upp filer via FTP/SFTP
- Konfigurera
.envför produktion - Installera dependencies:
pip install -r requirements.txt - Kör migrations:
flask db upgrade - Skapa admin:
flask create-admin - Aktivera HTTPS (Let's Encrypt)
- ✅ Meta tags - Open Graph, Twitter Cards
- ✅ Sitemap.xml - Dynamisk sitemap
- ✅ robots.txt - Sökmotorinstruktioner
- ✅ RSS feed -
/rsseller/feed - ✅ Kanoniska URLs - Förhindrar duplicate content
- ✅ Structured data - Schema.org markup (planerat)
Redigera app/static/css/style.css:
:root {
--primary-color: #d4915c; /* Orange/terrakotta */
--secondary-color: #4a7c59; /* Skogsgrön */
--accent-warm: #e8a574; /* Ljus orange */
/* ... */
}Lägg dina bilder i app/static/images/:
favicon.ico(16x16, 32x32)favicon.png(192x192)og-default.png(1200x630) - Open Graph
# Kör tester (när test-suite är implementerad)
pytest
# Coverage report
pytest --cov=app- Dark mode toggle
- Newsletter-funktionalitet
- Email-verifiering vid registrering
- 2FA-autentisering
- Post-versionshantering
- Multi-språkstöd (i18n)
- Avancerad analytics
- API-endpoints
- GraphQL-support
Contributions är välkomna! Om du vill bidra:
- Forka projektet
- Skapa en feature branch (
git checkout -b feature/AmazingFeature) - Commit dina ändringar (
git commit -m 'Add some AmazingFeature') - Push till branchen (
git push origin feature/AmazingFeature) - Öppna en Pull Request
# Sätt upp development environment
pip install -r requirements-dev.txt
# Kör linting
flake8 app/
# Formatera kod
black app/Detta projekt är licensierat under MIT License - se LICENSE filen för detaljer.
Maria Tingvall
- GitHub: @Majsan-T
- Website: curiouspaths.se
- Email: maria@curiouspaths.se
- Flask - Det fantastiska webbramverket
- Bootstrap - UI-komponenter
- Quill - Rich text-editor
- Font Awesome & Bootstrap Icons
- Anthropic Claude, ChatGPT, Copilot, Le Chat och Ollama - För hjälp med kodgranskning och optimering
Om du har frågor eller stöter på problem:
- Kolla DEPLOYMENT.md för deployment-hjälp
- Öppna ett Issue
- Kontakta via email: maria@tingvall.nu
Byggt med ❤️ och ☕ av Maria Tingvall



