Getcement is a mobile application designed to streamline the cement distribution process. It enables users to easily place cement orders, track deliveries, and view transaction history. The app is developed using Next.js ( React framework) and it offers a user-friendly interface. The app was deployed using Vercel. commit
Deployed site: https://getcement.vercel.app
Final project blog article: [Solving Nigeria cement distribution challenges with Getcement App] https://www.linkedin.com/pulse/solving-nigeria-cement-distribution-challenges-getcement-obah-sylva%3FtrackingId=8aBQq5UMQlKZfDmIYLK15g%253D%253D/?trackingId=8aBQq5UMQlKZfDmIYLK15g%3D%3D
Author LinkedIn:
To clone Getcement on your computer, follow these steps:
-
Clone the repository:
git clone https://github.com/Sylvan452/getcement.git
-
Navigate to the project directory:
cd getcement
-
Install the dependencies and run
npm run dev
To use the Getcement app, follow these instructions:
-
Open your browser:
2. Open the Getcement app on your device.
3. Sign in with your credentials or signup for a new account if you are a new user.
4. Explore the app and enjoy the seamless cement distribution experience.
## Contributing
We welcome contributions from the community to improve and enhance Getcement. If you would like to contribute, please follow these steps:
1. Fork the repository.
2. Create a new branch:
git checkout -b feature/your-idea
3. Make your changes and commit them:
git commit -m "Add your commit message here"
4. Push the changes to your branch:
git push origin feature/your-idea
5. Open a pull request and describe your changes in detail.
# The Story Behind Getcement
About Eleven (11) years ago while I was working as Special Assistant to the Chairman, Delta State Board of Internal Revenue, I decide to have another stream of income, what I referred to as a side hustle. I opened up a cement shop in Warri, Delta State, registered a company and registered as a distributor of Dangote Cement. However, these were not without challenges. Sooner, the reality and difficulty of the business set in.
Contrary to my initial understanding, I discovered that cement was not as readily available, and it passes many distribution channels to get to the end-user. Cement passes through major distributors, sub-distributors, and retailers before getting to the end-users. At each level of the distribution channel, profit margins are added which aggregately affect the high cost of cement in Nigeria.
For the past few years, I’ve been working on how best to solve the above-listed problems.
ALX project offered me the opportunity to experiment with some of my thoughts through implementing and practising what I’ve learnt in the past 9months as a software engineering student. Getcement is therefore leveraging the power of Technology to connect the end-user directly to the producer of cement or via a one-step retailing channel to provide a solution to the issue of cement distribution in Nigeria.
# Technologies:
The Getcement app was made with Next Js, Tailwind CSS, React JS, Mapbox API, Firebase and Paystack payment API. It is modelled to look functional just like the real Uber app with both the final consumer (end-user) side and driver (retailer) side. Though due to the complexity of the project, we focused on the end-user side of this project. But we have agreed as a team to continue improving the functionality of the application even after the end of the project deadline.
We'll start by setting up our project with Next Js then move on to creating the UI with Tailwind CSS. Next, we added Mapbox API to implement the mapping feature and Paystack API for payment implementation. The project was deployed using Vercel. In the future, we'll finish up this project by integrating Node JS for the server side.
# Key Features
## OAuth via Google – By using Firebase, GetCement allows users to sign up and log in using their existing Google accounts, this help simplifies the registration process and enhances convenience.
## Responsive Layout – The app is well-built with a responsive layout for both mobile and desktop views.
## Appealing Landing Page - Our platform features an appealing and intuitive landing page that provides users with a seamless ordering experience. The landing page provides a link to the About Us page, signup and login buttons and a demo video that help new users get acquitted with the app.
## Our Most Difficult Technical Challenges
One of the challenging technical issues I encountered while working on the GetCement project was implementing real-time coordination between users to facilitate efficient delivery and pickup of cement orders. The goal was to provide a seamless experience for users by allowing them to track the location of delivery trucks and coordinate their locations in real time.
## Situation:
GetCement aimed to optimize the delivery process by implementing a real-time coordination system. Users needed to be able to track the progress of their orders, view the location of delivery trucks on a map, and coordinate their locations with the delivery team to ensure smooth and timely deliveries.
Task:
My task was to design and implement a real-time coordination system that would enable users to track delivery trucks and share their coordinates for efficient order delivery.
Action:
To address this challenge, I followed the following steps:
1. Researched and evaluated different technologies and APIs suitable for real-time location tracking and coordination. After careful consideration, I chose to use Mapbox API for a real-time messaging system.
2. Designed the system architecture, including the server-side infrastructure and client-side components.
3. Integrated the Mapbox API into the front end of GetCement to display the live location of delivery trucks and user locations on a map.
4. Developed client-side components using JavaScript to establish a persistent connection for real-time updates.
5. Implemented functionality for users to share their coordinates with the delivery team and receive updates on the progress of their orders.
6. Conducted thorough testing to ensure the system's reliability, accuracy, and responsiveness in updating and sharing location data.
Result:
The implementation of the real-time coordination system proved to be successful. Users were able to track the location of delivery trucks in real-time, view their location on the map, and coordinate efficiently with the delivery team for order pickups.
By overcoming the challenges associated with implementing real-time coordination, I showcased my ability to integrate external APIs, design scalable server-client communication, and ensure the accuracy and responsiveness of location tracking.