A FastAPI-based web framework
Project description
Vilcos Framework ๐
A modern, full-stack web framework built on FastAPI and Vue.js with real-time capabilities.
Features โจ
- Modern UI - Vue 3 + Vuetify 3.7.3 for beautiful, responsive interfaces
- Authentication - Secure session-based auth with Argon2 password hashing and role-based access control
- Database - Async SQLAlchemy with PostgreSQL and connection pooling
- API Ready - FastAPI-powered REST endpoints with automatic OpenAPI docs
- Developer Friendly - CLI tools, hot reloading, and interactive shell
- Real-time WebSockets - Multi-channel WebSocket support with JSON message broadcasting
- Session Management - Redis-backed secure sessions with configurable settings
- User Management - Complete user administration with CRUD operations
- Role-Based Access - Flexible role management system with admin interface
- Modern Frontend - Material Design Icons, Axios for HTTP requests, and responsive layouts
Quick Start ๐
Installation
# Clone the repository
git clone https://github.com/yourusername/vilcos.git
cd vilcos
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
# Install vilcos
pip install vilcos
Environment Setup
- Set up your environment variables:
# Copy the sample environment file
cp .env.sample .env
# Edit .env with your configuration
vim .env # or use your preferred editor
Required environment variables:
# Database Configuration
DATABASE_URL=postgresql+asyncpg://user:pass@localhost/dbname
# Security Settings
SECRET_KEY=your-secure-secret-key
SESSION_COOKIE_NAME=vilcos_session
SESSION_COOKIE_MAX_AGE=86400
SESSION_COOKIE_SECURE=true
SESSION_COOKIE_SAMESITE=lax
# Redis Configuration
REDIS_URL=redis://localhost:6379
- Initialize and run:
# Create database tables and default roles
vilcos init-db
# Create an admin user (optional)
vilcos create-admin
# Start the development server
vilcos run
Your app is now running at http://localhost:8000 ๐
Project Structure ๐
vilcos/
โโโ .env.sample # Sample environment configuration
โโโ pyproject.toml # Project configuration and dependencies
โโโ requirements.txt # Python dependencies
โโโ vilcos/ # Main package
โโโ static/ # Static assets
โโโ templates/ # View templates
โ โโโ admin/ # Admin interface templates
โ โโโ auth/ # Authentication templates
โโโ routes/ # API endpoints and routes
โ โโโ auth.py # Authentication routes
โ โโโ users.py # User management routes
โ โโโ roles.py # Role management routes
โ โโโ websockets.py # WebSocket routes
โโโ models.py # Database models
โโโ schemas.py # Pydantic schemas
โโโ config.py # Application settings
โโโ db.py # Database configuration and utilities
โโโ auth_utils.py # Authentication utilities
โโโ utils.py # Utility functions
โโโ cli.py # Command-line interface
โโโ app.py # Application entry point
Authentication ๐
Vilcos uses a simple but secure session-based authentication system:
- Secure Password Storage: Argon2 hashing (winner of the Password Hashing Competition)
- Session Management: Redis-backed sessions with secure defaults
- Cookie Security: HTTPOnly, Secure, and SameSite flags enabled
- Database Integration: Direct SQLAlchemy models for user management
Routes
/auth/signin- User login/auth/signup- New user registration/auth/signout- User logout/admin/users- User management dashboard/admin/roles- Role management dashboard
Security Best Practices
- Generate a strong secret key:
python -c "import secrets; print(secrets.token_hex(32))"
- In production:
- Set
SESSION_COOKIE_SECURE=True - Use HTTPS
- Configure Redis with authentication
- Use strong database passwords
Key Features ๐
User Management
The framework includes a comprehensive user management system:
-
User Administration
- Create, read, update, and delete users
- Manage user roles and permissions
- Toggle user activation status
- Secure password management
-
Role Management
- Create and manage custom roles
- Assign/remove roles from users
- Role-based access control for routes
- Admin interface for role management
WebSockets
// Connect to a specific channel
const ws = new WebSocket('ws://localhost:8000/ws/mychannel');
// Send JSON messages
ws.send(JSON.stringify({
type: 'chat',
content: 'Hello everyone!'
}));
// Handle incoming messages
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log(`Received at ${data.timestamp}:`, data.data);
};
CLI Tools
vilcos version # Show version
vilcos run # Start development server
vilcos init-db # Initialize database tables
vilcos create-admin # Create admin user
vilcos shell # Launch interactive shell
Requirements ๐
- Python 3.8+
- PostgreSQL
- Redis
Configuration โ๏ธ
Essential .env settings:
DATABASE_URL=postgresql+asyncpg://user:pass@localhost/dbname
SECRET_KEY=your-secure-secret-key
REDIS_URL=redis://localhost:6379
Contributing ๐ค
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add feature') - Push branch (
git push origin feature/amazing) - Open Pull Request
License ๐
MIT License - see LICENSE file
Support ๐ฌ
- GitHub Issues: Bug reports
- GitHub Discussions: Questions
- Documentation: [Coming Soon]
Built with โค๏ธ using FastAPI, Vue.js, and modern web technologies.
Project details
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 vilcos-0.4.0.tar.gz.
File metadata
- Download URL: vilcos-0.4.0.tar.gz
- Upload date:
- Size: 152.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c607831018cef8debadb8235048d27ba571c2e44d739186860e4eea84d8f445
|
|
| MD5 |
906252369ba4744836d00c6c8480e1e6
|
|
| BLAKE2b-256 |
908158c47e8cfc8ff5b21ffae23a8cc510b40e87898b9987cc088785b1b2a3b5
|
File details
Details for the file vilcos-0.4.0-py3-none-any.whl.
File metadata
- Download URL: vilcos-0.4.0-py3-none-any.whl
- Upload date:
- Size: 28.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1da7400779a4e9ea5f43dd3581fae9e8b5d361245a22cf4489faa058839e235
|
|
| MD5 |
c2cebba07dcf454aa49d5282be491d37
|
|
| BLAKE2b-256 |
f85776c40937fa7309490e2ed48a76f729ec366cdb201cdf570bab886259e94e
|