Rwanda

Full Stack web app
Year: 2020
Technologies: Python, Django, JavaScript, VueJs
Categories: Web App

Description

Rwanda is an innovative digital platform serving as a marketplace for both sellers and buyers, offering a seamless experience for trading digital products. The name Rwanda is a code name inspired by the country Rwanda in Africa, this project aims to foster economic growth and empowerment by facilitating transactions in the digital realm. 

Sellers can showcase their digital creations, while buyers can explore a diverse range of products, creating a dynamic marketplace that celebrates creativity and entrepreneurship. With Rwanda, the digital landscape becomes more accessible, connecting individuals and businesses worldwide in a thriving ecosystem of trade and innovation.

Online Demo

Account

https://rwanda.danielblandes.com

Seller

 – seller@rwanda.app
 – sellerpassword

Buyer John

– john@rwanda.app
– johnpassword

Buyer Jane

– jane@rwanda.app
– janepassword

Admin

https://admin.rwanda.danielblandes.com

Superuser

– superuser@rwanda.app
– superuserpassword

App (Backend)

– GraphQl Account – https://app.rwanda.danielblandes.com/graphql
– GraphQl Admin – https://app.rwanda.danielblandes.com/graphql-admin

Key Features

✦ Seller Portfolio: Allow sellers to showcase their portfolio, previous work.

✦ Service Categories and Filters: Organize services into categories and provide filters to allow users to easily find what they’re looking for based on their preferences and requirements.

✦ Service Selection: Users should be able to browse through a variety of services offered by different sellers, with detailed descriptions, pricing, and seller ratings.

✦ Order Placement: Allow users to easily place orders for services they wish to avail. This should include options for customization, if applicable.

✦ Secure Messaging: Implement a built-in chat feature with online status that enables seamless communication between the buyer and the seller. This ensures clarity regarding the service requirements, delivery details, and any other queries.

✦ Payment Escrow: Utilize an escrow system to hold the payment securely until the service is successfully delivered. This builds trust between the buyer and the seller, as the seller knows they will only receive payment upon completion of the service.

✦ Seller Verification: Implement a verification process for sellers to ensure they are legitimate and trustworthy. This can involve identity verification and verifying the quality of their services.

✦ Disputes solving: Resolve Disputes feature empowers administrators to efficiently and fairly handle any conflicts or disputes that may arise between buyers and sellers on the platform. It provides a structured process for reviewing, investigating, and reaching resolutions for disputed transactions.

✦ Multi-platform Accessibility: Ensure the app is accessible across various devices and platforms, including smartphones, tablets, and desktops, to maximize user convenience.

✦ Delivery Tracking: Provide users with real-time updates on the status of their service delivery.

✦ Development & Deployment: Rwanda utilizes Docker containers to streamline its development and deployment processes, bolstering the
efficiency and consistency of its backend and frontend applications.

Architecture

The application architecture is split in three different parts: app(backend), frontend for seller and buyer accounts, and frontend for admins.

App (Backend With Django Framework)

The backend of the application serves as the central component responsible for managing data, handling business logic, and facilitating communication between the frontend interfaces and the database. Here’s a breakdown of its key components

✦ Server: Built on top of a high-level Python web
framework Django.

✦ Database: Utilized the World’s most advanced open source relational
database PostgreSQL to store user information, service details, orders, and chat messages.

✦ API Endpoint: Take advantage of Graphql using the package Graphene Django to handle operations such as user authentication, service listing, order placement, messaging between users, and payment processing.

✦ Authentication: Implement strong and secure authentication and authorization mechanisms using Django GraphQL JWT witch is a JSON Web Token (JWT) authentication for Graphene Django.

✦ WebSockets: Integrate WebSockets for real-time communication between buyers and sellers during the chat exchange using Django Channels based WebSocket for Graphene Django.

✦ Payment Gateway Integration: Integrate CinetPay a mobile money payment gateway to facilitate secure payment transactions between buyers and sellers.

✦ Background Jobs: Implement background job processing using Celery and Redis to handle tasks such as sending notifications, updating order status, and processing payments asynchronously.

Account (Vue Framework)

The frontend interfaces for sellers and buyers provide user-friendly interfaces for browsing services, placing orders, and managing their accounts. Here are the technical details

✦ Framework: Develop the frontend using a modern JavaScript framework Vue.js to create dynamic and responsive user interfaces.

✦ Component Architecture: Organize the frontend application into reusable components for modularity and maintainability.

✦ State Management: Utilize state management Vuex to manage application state, including user authentication, service listings, and order status.

✦ API Integration: Communicate with the backend API endpoints using asynchronous HTTP requests using Vue Apollo to fetch service data, submit orders, and exchange messages.

✦ Real-time Updates: Implement real-time updates using WebSockets to display new messages and order status changes without the need for manual page refreshes.

✦ Responsive Design: Ensure the frontend interfaces are optimized for various screen sizes and devices using responsive design principles and CSS
frameworks Bootstrap.

Admin (Vue Framework)

The frontend interface for admins provides the necessary tools for managing users, services, orders, and resolving disputes. Here are the technical aspects:

✦ Framework: Develop the frontend using a modern JavaScript framework Vue.js to create dynamic and responsive user interfaces.

✦ Component Architecture: Organize the frontend application into reusable components for modularity and maintainability.

✦ State Management: Utilize state management Vuex to manage application state, including user authentication, service listings, and order status.

✦ API Integration: Communicate with the backend API endpoints using asynchronous HTTP requests using Vue Apollo to fetch service data, submit orders, and exchange messages.

✦ Real-time Updates: Implement real-time updates using WebSockets to display new messages and order status changes without the need for manual page refreshes.

✦ Responsive Design: Ensure the frontend interfaces are optimized for various screen sizes and devices using responsive design principles and CSS
frameworks Bootstrap.

Source Code  

You can take a look a the source code publicly available on GitLab. Fell free to contribute . Thank You