Epic Events is an event management company that specializes in organizing various events for its clients. To enhance its workflow, Epic Events aims to develop a Customer Relationship Management (CRM) software. The CRM software will facilitate the collection and processing of client and event data, improving communication across different departments within the company.
- The application will be a command-line interface (CLI) application.
- Python 3 (version 3.9 or newer) will be used for development.
- SQL injection prevention is a priority.
- The principle of least privilege will be implemented when granting data access to users.
- Effective logging using Sentry for exceptions and errors.
- Create, update, and delete employees in the CRM system.
- Create and modify all contracts.
- Filter event display, e.g., display events without an associated support member.
- Modify events (associate a support team member with an event).
- Create clients (automatically associated with the sales team member).
- Update clients for whom they are responsible.
- Modify/update contracts of clients for whom they are responsible.
- Filter contract display, e.g., display unsigned or unpaid contracts.
- Create an event for a client who has signed a contract.
- Filter event display, e.g., display only events assigned to them.
- Update events for which they are responsible.
- Python 3 (version 3.9 or newer)
- SQLAlchemy for database operations
- Sentry for effective logging
- CLI implementation
- SQL injection prevention measures
- Principle of least privilege for data access
- Clone the repository:
git clone https://github.com/your-username/epic-events-crm.git
- Install dependencies:
pip install -r requirements.txt
- Database Setup: You should have PostgreSQL installed
Before running the application, you need to set up the database. We use SQLAlchemy and Alembic for database migrations.
Alembic Migration To create and apply database migrations, run the following commands:
bash```
alembic init alembic
alembic revision --autogenerate -m "Initial migration"
alembic upgrade head
This sets up Alembic and applies the initial migration to create the necessary database tables.
```
- Run the application:
python main.py
- Follow the on-screen instructions to navigate through the application.
- A Menu shoul apprear on the Terminal, use the arrow to navigate.
We leverage SQLAlchemy as the ORM (Object-Relational Mapping) tool for interacting with our database. This allows us to work with the database using Python objects.
Alembic is used for database migrations. It helps manage changes to the database schema over time, making it easy to evolve the database along with the application.
Our test suite is built using pytest. It ensures the reliability and correctness of our codebase through automated tests. To run test:
bash```
pytest -s
```
dont forget the flag -s because we use 'capsys' for capturation printed data on the Terminal.
Other dependencies can be found in the requirements.txt file. We use these libraries to enhance various aspects of the application, from handling forms to managing user authentication like 'bcrypt' for password hashing.