a lightweight foundation for building Python web tools.
Project description
Soseki
A lightweight, batteries-included Flask framework designed for rapidly building internal tools, admin panels, and data-driven web applications.
Soseki takes care of the repetitive infrastructure—authentication, database management, background jobs, API controls, and logging—so you can focus on building the features that matter. Perfect for prototypes, internal dashboards, and production-ready utilities that need to ship fast without sacrificing structure.
Features
- 🔐 User Management - Complete authentication system with Flask-User
- 📊 Database Management - SQLAlchemy integration with dual database support (app + logs)
- ⏰ Job Scheduling - Background job execution with APScheduler
- 📧 Email Support - Built-in email functionality with Flask-Mail
- 🔌 API Gateway - API key management and rate limiting
- 📝 Request Logging - Comprehensive request/response logging
- 🛠️ Database Versioning - Built-in database migration support
- 🛠️ CLI - interactive command line for quick feature development and testing
- 🎨 Customizable - YAML-based configuration system
Requirements
- Python 3.10 or higher
- Flask 3.0+
- SQLAlchemy 2.0+
Installation
From PyPI (coming soon)
pip install soseki
From source
git clone https://github.com/acodingmind/soseki
cd soseki
pip install -e .
Development Installation
pip install -r requirements.txt
pip install -r requirements-dev.txt
Quick Start
- Initialize a new soseki like application:
# Create a project folder
mkdir soseki_app
cd soseki_app
# Install soseki
python3 -m venv venv
source venv/bin/activate
pip install soseki
# Initialize basic soseki app
python3 -m ssk.cli init
- Update configuration file (
cfg/lite.yaml):
ssk:
USER_APP_NAME:
string: 'MyApp'
SECRET_KEY:
string: 'your-secret-key-here'
SQLALCHEMY_DATABASE_URI:
string: 'sqlite:///myapp.sqlite'
LOG_DB_CONNSTR:
string: 'sqlite:///myapp_log.sqlite'
- Run your application:
# run the app
./bin/run_app.sh
Documentation
How To
Blanco App
Check the app/ directory for a complete working example application.
The standard folder structure (created by init command):
assets/local- Static files (CSS, JS)blueprints/- Flask blueprintscfg/- Configuration fileshtml/local- Templateslogic/cmd- Custom commandslogic/jobs- Background jobsmodels/- Database models
Project Structure
soseki/
├── ssk/ # Core framework package
├── app/ # Blanco application
├── bin/ # Utility scripts
├── tests/ # Test suite
├── docs/ # Documentation
└── requirements.txt # Core dependencies
Running Tests
pytest
With coverage:
pytest --cov=ssk
License
MIT License - see LICENCE file for details.
Author
Michał Świtała - CodingMinds.io
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues and questions, please use the GitHub issue tracker.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file soseki-0.8.8.tar.gz.
File metadata
- Download URL: soseki-0.8.8.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
885dbb635e64a07d626f0c43392296887b3c7eb5e80f220de56c39013b8703a8
|
|
| MD5 |
0093c6da508a1e546b8725238310ccda
|
|
| BLAKE2b-256 |
1e2a7cbc062f9a26ac525a0985055faab79cd79b5f0f8f3927ed7e5bb03a3bf9
|
File details
Details for the file soseki-0.8.8-py3-none-any.whl.
File metadata
- Download URL: soseki-0.8.8-py3-none-any.whl
- Upload date:
- Size: 1.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f0d7d9105bd353a11f0d2ddc5705703e40dbfceb65d33852f53b13bf0b4645d
|
|
| MD5 |
0800a1daaf954a8fa691f3fa1d9bebb8
|
|
| BLAKE2b-256 |
e0846f21216156931169c65619a0ae8ae54c6d8dd67dec843e614f9012e4f3b3
|