
Welcome to SwiftSend! This project is designed to provide a comprehensive platform for managing contacts, message templates, message logs, and recipient logs. SwiftSend offers a suite of features to help individuals and businesses stay connected with their contacts and streamline their messaging workflows. With intuitive API endpoints with robust functionality, my platform empowers users to:
- Manage Contacts: Easily store, organize, and update contact information for individuals.
- Create Templates: Craft reusable message templates to save time and ensure consistency in communication.
- Send bult SMS to their contacts.
- Track Message Logs: Keep a record of all sent messages, including delivery status and timestamps.
- Resend or edit and resend an SMS from the logs.
- Contact Management: Create, update, and delete contacts.
- Template Creation: Design customizable message templates with dynamic placeholders for personalized content.
- Message Logging: Record details of sent messages, including content, recipients, timestamps, and delivery status.
- Send Bulk SMS and Personalized templates to contacts at once.
- Resend or Edit and Resend SMS from message logs.
This project serves as a task as part of my recruitment process for a Backend Engineering role. It represents an opportunity for me to showcase my skills and expertise in developing backend solutions using Django, a powerful web framework for Python.
Throughout this project, I demonstrated my proficiency in various aspects of backend development, including:
-
Database Design and Management: Designing and implementing efficient database models to store and manage data effectively of which I used the
Postgres Database
from Supabase a Cloud Database Plateform -
API Development: I created robust APIs to facilitate communication between any SMS frontend and this backend application. Utilizing the
Django
andDjango Rest Framework
, I was able to achieve this with a few lines of code. -
Testing: I wrote a comprehensive tests with the Pytest-Cov library to ensure the reliability and stability of the backend codebase.
-
Documentation: With the help of the DRF-Spectacular library, I was able to generate a clear and concise documentation to guide future developers and users of the system.
-
Deployment: Finally, I deployed the application to Koyeb production environment, ensuring that it is secure, scalable, and accessible to end-users.
python3.10
django
djanfo-restframework
docker (*optional)
git clone https://github.com/juliusmarkwei/ecommerce-backend.git
cd ecommerce-backend/
pip install -r requirements.txt
- Create a
.env
. Inside the .env add aSECRET_KEY
and your database configurations of the database of your choice. You can generate aSECRET_KEY
using the following code snippet:
from django.core.management.utils import get_random_secret_key
print(get_random_secret_key())
- Add the following line printed above to the
.env
file:
SECRET_KEY=your_secret_key_here
DB_HOST=your_db_host
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=your_db_name
DB_PORT=your_db_port
DB_ENGINE=your_db_engine
EMAIL_BACKEND=your_email_backend
EMAIL_HOST=your_email_host
EMAIL_PORT=your_email_port
EMAIL_HOST_USER=your_email_user
EMAIL_HOST_PASSWORD=your_email_password
AFRICASTALKING_API_KEY=your_api_key
AFRICASTALKING_USERNAME=your_username
- In the root directory of the project, create a superuser to manage all the users of the application. be sure python is installed before you proceed with this stage.
python3 manage.py createsuperuser
- Run the command below to start the application server and access the application running on a default port 8000 via http://localhost:8000.
python3 manage.py runserver
- template....
We welcome contributions and participation from the community to help make this e-commerce backend API even better! Whether you're looking to fix bugs, add new features, or improve documentation, your help is greatly appreciated. Here's how you can get involved:
If you encounter any bugs or issues, please report them using the Issues section of my GitHub repository. When reporting issues, please include:
- A clear and descriptive title.
- A detailed description of the problem, including steps to reproduce it.
- Any relevant logs or error messages. Your environment details (e.g., Django version, DRF version, database, etc.).
Contributions are welcome! If you'd like to contribute to the project, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix: git checkout -b feature-branch.
- Make your changes and commit them: git commit -m 'Add new feature'.
- Push to the branch: git push origin feature-branch.
- Submit a pull request with a detailed description of your changes.