condoctl.services web application is designed to meet the administrative needs of condominiums or subdivisions, offering a modern, simple and scalable platform. Inspired by the ease of use and the ability to scale functionalities, this tool aims to facilitate the management of users, properties, income, expenses and access in condominiums.
The web application condoctl.services is designed to address the administrative needs of condominiums or residential complexes, offering a modern, simple, and scalable platform. Inspired by ease of use and the ability to scale functionalities, this tool aims to simplify the management of users, properties, income, expenses, and access in condominiums.
The application will be developed using PHP with the Laravel framework, employing MySQL as the database, and the "Creative Tim - Material Dashboard" user interface theme to provide a responsive, intuitive, and user-friendly experience. All code will adhere to the MIT license to ensure reuse.
This platform will have a scalable design, allowing new modules or functionalities to be added in the future without affecting existing ones, and preparing for integration with mobile applications. The interface will focus on blue tones and will be bilingual (English and Spanish).
The development prioritizes ease of use and includes key initial modules covering system configuration, users and roles, property management, income, expenses, account statements, and access.
The requirements for the development of condoctl.services are structured following the MoSCoW prioritization framework (Must Have, Should Have, Could Have, Won't Have for now):
- General configuration system:
- Modify
.env
file variables from the administration interface.
- Modify
- "Condominium Configuration" Module:
- Manage general condominium data (name, address, regulations, etc.).
- Users and Roles Module:
- Register and manage users.
- Assign roles and specific permissions.
- "Property Management" Module:
- Register properties linked to residents and contact details.
- Track occupancy status of each property (occupied, unoccupied, rented).
- "Account Statements" Module:
- View balances and movements for each property.
- Generate basic financial reports.
- "Income" Module:
- Record payments made by residents (maintenance fees, other concepts).
- "Expenses" Module:
- Manage and record administrative and operational expenses for the condominium.
- "Access" Module:
- Record visitor and supplier entries and exits by security personnel.
- Multilingual:
- Interface available in English and Spanish.
- Responsive design for mobile devices and tablets.
- Basic notification system (emails) for important alerts.
- Future integration with mobile applications.
- Advanced reporting system with PDF or Excel exports.
- Integration with online payment systems.
- Artificial intelligence for expense or income prediction.
- Integration with IoT devices (e.g., automated access control).
To address the described requirements, an architecture based on modularity and scalability principles will be designed. The main components include database structure, business logic layers, user interfaces, and additional required services. The details are outlined below:
The application will follow an MVC (Model-View-Controller) model using the Laravel framework:
- Model: Represents database entities, such as users, properties, income, and expenses.
- View: Uses the "Creative Tim - Material Dashboard" theme to ensure a modern and responsive interface.
- Controller: Manages interactions between the user and the model, ensuring clear business logic.
The database will be structured with normalized tables to ensure efficiency. Some key tables include:
users
: System user records (administrators, residents, security personnel).- Columns:
id
,name
,email
,password
,role_id
,created_at
,updated_at
- Columns:
roles
: Role and permission management.- Columns:
id
,name
,permissions
- Predefined roles:
sysadmin
,admin
,resident
,security
,read_only
. These roles will not be editable through the user interface. - Custom roles can be created by assigning permissions via checkboxes.
- Columns:
properties
: Property information.- Columns:
id
,name
,owner_id
,tenant_name
,tenant_contact
,rental_contract_end
,status
,created_at
,updated_at
- Columns:
transaction_types
: Configurable expense types.- Columns:
id
,name
,description
,created_at
,updated_at
- Columns:
transactions
: Income and expense records.- Columns:
id
,property_id
,type
(income/expense),amount
,transaction_type_id
,description
,date
,created_at
,updated_at
- Columns:
transaction_logs
: Transaction change logs.- Columns:
id
,transaction_id
,original_data
,change_type
,changed_by
,changed_at
- Columns:
access_logs
: Visitor and supplier access records.- Columns:
id
,visitor_name
,property_id
,date
,time
,created_at
,updated_at
- Columns:
-
General Configuration:
- Interface for modifying
.env
file variables. - Validations to prevent errors when modifying critical settings.
- Interface for modifying
-
Condominium Configuration:
- Form to register and edit condominium data.
- Options to upload regulations and important documents.
-
Users and Roles:
- CRUD (Create, Read, Update, Delete) for users.
- System to assign roles with specific permissions via checkboxes.
- Predefined, non-editable roles:
sysadmin
,admin
,resident
,security
,read_only
.
-
Property Management:
- Register properties as complete records.
- Include owner details, contact information, occupancy status (occupied, unoccupied, rented).
- Manage tenant information (name, contact, rental contract duration).
-
Account Statements:
- Detailed view of movements for each property.
- Options to generate basic PDF reports.
-
Income and Expenses:
- Separate forms for recording payments and expenses.
- Lists with filters by date, property, and transaction type.
- Expense types managed in a separate module.
- Every transaction change logged in the
transaction_logs
table, storing original data, change type, the user who made the change, and the date.
-
Access:
- Record entries and exits via a simple form.
- Historical lists with search options.
To implement the condoctl.services system, the following stages are proposed:
- Configure the development environment with Laravel and MySQL.
- Integrate the "Creative Tim - Material Dashboard" theme.
- Set up version control using Git.
- Create the tables defined in the database design section.
- Configure relationships between tables (e.g., properties and users, transactions and transaction types).
-
General Configuration:
- Create a form to modify
.env
file variables. - Implement validations and basic tests.
- Create a form to modify
-
Users and Roles:
- Implement CRUD for users and roles.
- Set up predefined roles and functionality to assign permissions.
-
Property Management:
- Create views and forms to manage properties.
- Include support for tenant data and occupancy status.
-
Income and Expenses:
- Develop forms and views to record transactions.
- Implement expense type management in a separate module.
- Add functionality to log changes in the
transaction_logs
table.
-
Access:
- Implement visitor entry and exit recording.
- Create historical lists with filtering options.
- Conduct functional tests for all modules.
- Fix bugs found during testing.
- Optimize database query performance.
- Configure the production environment.
- Migrate the database to the production server.
- Publish the application on a domain accessible to users.
- Implement an error-tracking system.
- Perform periodic updates to improve functionality and security.
- Prepare the development environment with Laravel and MySQL.
- Set up version control (Git).
- Create tables and relationships in MySQL.
- Validate the integrity of entity relationships.
- Implement the general configuration module.
- Create the CRUD for users and roles.
- Design and develop property management.
- Finalize income, expense, and access modules.
- Add transaction log functionality.
- Conduct comprehensive testing for all modules.
- Optimize queries and overall performance.
- Configure the production environment.
- Deploy the application and conduct final tests.
- Implement error-tracking systems.
- Provide initial support and periodic updates.