FitZone is a comprehensive management system designed for gyms and fitness centers. It provides tools for managing members, trainers, and administrative staff, with secure authentication and data management capabilities.
- User Management: Register and manage gym members with membership details and renovation dates
- Trainer Management: Track trainers, their specialties, and working hours
- Admin System: Multi-level administrative access with secure authentication
- Data Relationships: Connect trainers with their manager accounts
- Secure Authentication: Password hashing with Argon2 for maximum security
- Fuzzy Search: Advanced search functionality with fuzzy matching capabilities
- Dynamic Data Tables: Real-time CRUD operations with instant updates
- Component-Based UI: Modular interface with reusable components
- Responsive Forms: Input validation and error handling across all forms
- Python 3.8 or higher
- pip package manager
-
Clone the repository
git clone https://github.com/vanstrouble/fitzone.git cd fitzone -
Install dependencies
pip install -r requirements.txt
-
Run the application
python app.py
The application will launch with a login interface and automatically create the database on first run. The default credentials are admin for both username and password.
The application requires the following packages (automatically installed via requirements.txt):
- CustomTkinter: Modern UI framework
- SQLAlchemy: Database ORM
- Argon2: Password hashing
- PrettyTable: Data visualization for development
- Python: Core programming language
- SQLAlchemy: ORM for database interactions
- SQLite: Lightweight database engine
- Argon2: Modern password hashing algorithm
- CustomTkinter: Enhanced Tkinter UI library for a modern interface
- PrettyTable: For formatted data visualization during development and testing
- Unittest: For testing application components
The application follows a domain-driven design with clean separation of concerns:
- Inheritance hierarchy: Base
Personclass with specializedUser,Trainer, andAdminsubclasses - Type safety: Comprehensive type hints and validation throughout
- Business logic: Rich domain models with embedded validation rules
- Database abstraction: Clean ORM layer with SQLAlchemy
- CRUD operations: Complete Create, Read, Update, Delete functionality
- Data conversion: Seamless transformation between domain and database models
- Dashboard analytics: Centralized business logic for reporting
- Component architecture: Reusable UI components with consistent styling
- Form validation: Real-time input validation with user feedback
- Dynamic tables: Live data updates with instant CRUD operations
- Advanced search: Fuzzy matching for improved user experience
- Clean Architecture: Domain-driven design with clear separation of concerns
- Security First: Argon2 password hashing with salt for maximum security
- Real-time Updates: Dynamic UI updates without page refreshes
- Type Safety: Comprehensive type hints throughout the codebase
- Error Handling: Graceful error boundaries across all application layers
- Component Reusability: Modular UI widgets with consistent interfaces
- Fuzzy matching algorithm: Sophisticated string similarity for user-friendly search
- Real-time filtering: Instant search results across all data tables
- Multi-field search: Simultaneous search across names, emails, and other fields
- Data integrity: Foreign key constraints and referential integrity
- Component composition: Reusable UI components with consistent styling
- Responsive layouts: Adaptive interface using CustomTkinter's modern styling
- Interactive data tables: Live CRUD operations with immediate feedback
- Color theming: Centralized color management for brand consistency
- Dynamic validation: Real-time input validation with user-friendly feedback
- Input sanitization: Comprehensive data cleaning before database operations
- State management: Proper handling of create/edit modes with data pre-population
- Password hashing: Industry-standard Argon2 algorithm with salt
- Session management: Secure authentication with proper lifecycle management
- Role-based access: Multi-level access control for different user types
- Input validation: Protection against injection attacks








