Giter Site home page Giter Site logo

theanh204 / qwicker-be Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 9.2 MB

A delivery mobile application inspired by Lalamove was born with a mission to replicate the features and functionalities by providing users with an efficient experience for booking and managing deliveries.

Python 6.01% HTML 3.23% CSS 43.92% JavaScript 2.71% SCSS 43.99% Dockerfile 0.15%
django django-rest-framework docker mvc-architecture mysql-database react-native redis

qwicker-be's Introduction

django mysql mysql ngix celery docker

Qwicker Backend

Qwicker backend is a comprehensive RESTful API backend designed to support applications for fast item delivery services, similar to Lalamove. It offers a wide range of features including user management, job registration, auction systems, system administration, and detailed data analytics

For a comprehensive user interface to interact with the Qwicker backend, check out my React Native client application repository here.
For a comprehensive demo, you can watch the full video on YouTube by clicking on the link provided here.

Table of contents

Tasks

  • User Management: Users can log in with roles such as admin, shipper, and regular user.
  • User and Shipper Registration: Users and shippers can register accounts, with shippers required to provide an avatar and identification information. Shipper accounts need to be confirmed by the admin.
  • Admin Management: Admins can add, delete, and update shipper information and promotional services. Admins can also view lists of pending shipping orders without assigned shippers.
  • Shipper Information Viewing: Users can view shipper profiles and details, including community ratings.
  • Item Posting: Users can post items they want to ship, and shippers can bid to secure the delivery rights.
  • Auction and Shipper Selection: Users choose shippers through auctions, with only the owner of the post seeing the auction details. When a shipper is selected, the system automatically sends notification emails to the chosen shipper and rejection emails to other bidders.
  • Rating and Commenting: Users can rate and comment on shippers within the system.
  • Order Recording and Notification: Shippers can record completed shipping orders, triggering email notifications to customers.
  • Online Payment with VNPay: Users can make online payments through VNPay, providing a convenient and secure payment method.
  • System Administration: Admins can view order information and use various search methods by date, product, and generate charts for delivery frequency and revenue.

🏛️Architecture diagram

🏛️Database schema diagram

🛠️Prerequisites

What you need to run the project:

  • Docker - Install Docker to run the project locally without the need to install additional dependencies. Run without docker:
  • Postman - Install Postman to interact with the API endpoints.

🚀Getting Started

After installing Docker, run the following commands to start experiencing this project:

# download the project
git clone https://github.com/Theanhmgt/qwicker-django-backend.git
cd qwicker-django-backend
# build container
docker compose build
# run container
docker compose up

At this time, you have a RESTful API server running at http://127.0.0.1:8000 or accessing the Swagger UI for interactive API documentation by navigating to http://127.0.0.1:8000/swagger.

# authenticate the user via: POST /auth/token/
curl -X POST -H "Content-Type: application/json" -d '{"username": "theanh1", "password": "Theanh28", "grant_type": "password"}' http://localhost:8000/auth/token/
# should return a token like: { "access_token": "...access token here...","refresh_token": "...refresh token here..."}
# with the above token, access the album resources, such as: GET /jobs/
curl -X GET -H "Authorization: Bearer ...access token here..." http://localhost:8000/jobs/
# should return a list of posting job in the JSON format

🏠User Interface

📊Admin Interface

Access the admin page by visit to http://127.0.0.1:8000/admin/ and logging in with the username admin and password theanh28 to perform system management functions and data analysis

🔧Configure Environment Variables (Not needed for basic project execution.)

To utilize all features of the project, including sending emails and online payments, make sure to set up all necessary environment variables in the .env file in the root directory of the project. Refer to the project documentation for guidance on setting up these variables.

📩 Gmail smtp config:
EMAIL_BACKEND: 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST: Hostname for the SMTP server (e.g., 'smtp.gmail.com')..
EMAIL_PORT: Port number of the SMTP server (e.g., 587 for TLS)..
EMAIL_HOST_USER: Username for the SMTP server (e.g., [email protected])..
EMAIL_HOST_PASSWORD: Password for the SMTP server.
DEFAULT_FROM_EMAIL: Default sender email address for outgoing emails (e.g., 'THEANH MGT | TheCodeSpace [email protected]')..

To obtain EMAIL_HOST_PASSWORD variable, following this post.

💳VNPay config:
VNPAY_TMN_CODE = TMN code for the VNPay API
VNPAY_HASH_SECRET_KEY = Secret key for hashing data when communicating with VNPAY
VNPAY_PAYMENT_URL = 'https://sandbox.vnpayment.vn/paymentv2/vpcpay.html'
VNPAY_RETURN_URL = 'http://127.0.0.1:8000/vnpay/payment_return/'

Register here to receive a detailed email, sandbox account, and essential keys.

🔗References

Here are some helpful resources and references for further information:

📧Contact

Don't hesitate to contact me if you have any confusion or questions anhthenguyen.work@gmail.com 1

🔼 Back to top

qwicker-be's People

Contributors

theanh204 avatar

Stargazers

 avatar Nguyễn Thế Anh avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.