An open source Customer Relationship Management system powered by Flask and SQLAlchemy.
Originally Created by Chris Hall
Modified by Yu
This app only works with python:3.6.4 so please setup your local python environment to use version 3.6.4
python --version
should print out "Python 3.6.4".
You can refer to devops_initial_setup on how to create a python virtual environment.
- Install all the dependencies
pip3 install -r requirements.txt
- Create the db table
python manage.py create_db
- Run the app
python run.py
- Build Docker image
easycrm
docker build -t easycrm .
- Create a Docker container
docker run -p 8090:8090 easycrm
Now you can access http://0.0.0.0:8090/login/ with Username test@gmail
and Password shh
auth -> controller
/login/
core -> controller
/
/contact/create
/contact/<con_id>
/organisation/create
/organisation/<org_id>
- app
|_ auth ...... controller, form helper and model for authentication
|_ core ...... controller, form helper and model for core functions
|_ database ...... admin data initialisation
|_ templates ...... HTML templates for simple webpages
- tests ...... Unit Test files
- config.py ...... DB config for test
- manage.py ...... DB operation
- run.py ...... Run the App from here
- Fork and separate the branch to master(dev), staging, prod
- Improve the Travis(Github)/Pipeline(Bitbucket) for build, test and deploy to AWS EC2
- Dockerise the app and build, test and deploy via Docker
- Set up statsd, prometheus and grafana for monitoring
- Add code to probe certain endpoints for monitoring the reliability, traffic and latency
- Use a load tester to test the performance and monitor it. Point out the problems
- Set up a CDN and Application Load Balancer
- Use Terraform for monitor/infra set up
- Separate the database, core logic and auth into multiple microservices
- Generate 10000 DB entries
- Add an external cache to load entries faster
- Introduce autoscaling via EBS
- Write a better frontend code in a different repo
- Setup deployment for the frontend to S3
- Point CloudFront to the S3
- Use Terraform to do the deployment