Customer Online Electronic Book
Live DemoAccess Info
Summary
I developed an online platform designed specifically for small and medium businesses that have trusted customers who borrow goods and pay at a later date. Instead of relying on physical record-keeping methods, such as a paper ledger, which are prone to damage or loss, this web application allows businesses to securely store and manage customer borrowing records digitally.
This solution arose from a problem I personally experienced a few years ago. As a regular customer at a nearby store, I was able to borrow various items on the basis of the trust that had been established between us. It was agreed that I would return the items within a reasonable timeframe, usually within one or two weeks. However, the store was owned by four brothers, and it was common for me to encounter a different storekeeper each time I visited. As a result, my borrowing records were recorded in a physical ledger, and each brother recorded my borrowing activity on a different page. This led to a lack of organization and caused confusion when it came to calculating and paying back what I owed. I eventually paid the amount that seemed most accurate, but I was dissatisfied by the lack of clarity and efficiency. It was this experience that inspired me to conceptualize and create the web application as a means of addressing the issue of disorganized record-keeping in small businesses.
Technologies I Used
I build this project with Django, Stipe and Django Channels are the main technologies I applied during the development of this project. And the database I used Postgresql
- Python
- Django
- HTML
- CSS
- Django Channels
- Stripe
- Postgresql
Features
- All the auth features (login, registration, reset and otp)
- Following or adding
- Saving records
- Notifications
- Personal OTP
- Charts
- Currencies
How It Works
Registration
For the registration both the customer and the store will use the same registration page. So, I the user want to register store, the user will only use the first name as the store name and at end choose the user type as store. Where the customer will user both the first name and the last name and choose the user type as customer.
When they both the customer and the store click register, they will be taken to the OTP verification page. After that the customer will be redirected to the dashboard and the store will be redirected to the plan page which they will choose their plan and subscribe. After the payment they will be redirected to the dashboard.
Searching and Adding.
Users may utilize the search functionality on the people page to locate and connect with stores or customers using their unique username. Upon identifying a desired store or customer, the user may initiate a connection request by clicking the either add store ore add customer buttons. The store or customer will receive a notification with the option to accept or decline the request. If the request is accepted, the user will be successfully added to the store or customer's network as a member or customer, respectively.
Saving Customer Record (The core Feature)
To save customer records, the store may navigate to the customers page and search for the desired customer using their unique username. Upon locating the customer, the store can click the "add record" button. Depending on the store's plan, the store may be prompted to select a preferred currency for the record. Upon selecting the currency, the store will be redirected to the add record page, which includes a form with two fields: "due" and "payment". If the customer is borrowing an item, the store should use the "due" field to record the amount owed. If the customer is making a payment towards a previous debt, the store should use the "payment" field to record the amount paid.
Upon submission of the record by the store, a notification will be sent to the customer with the details of the record. The customer may review the record to ensure its accuracy and choose to either accept or cancel the record. If both parties verify and agree to the accuracy of the record, it will be saved to the customer's profile. This process allows for transparency and ensures that both the store and customer have a clear understanding of any debts or payments made.
There is a potential issue with the current system that requires addressing: both the customer and the store must have an active internet connection in order to utilize the platform's features. While the store, as a paying subscriber, is likely to have a reliable internet connection at the physical location, the customer may not have an internet connection at all times. This could pose a problem, as internet connectivity is essential for the platform to function effectively. To address this issue, I considered various solutions and ultimately determined that implementing a bulk SMS service would be the most effective solution. By adding a verification type option to the record creation page, the store can choose to use either a notification or SMS for verification. In order this option to be available at the record creation page the store must enable this feature in their settings If the store selects it as the verification method, an OTP code will be sent to the customer via SMS. The customer can then verify the record by providing the store with the code, allowing the store to save the record. Please note that the SMS verification feature is not available in the live demo due to the cost of using the Twilio service. However, there is a redundant option available to customers who are unable to receive SMS messages. Each customer will have access to 5 unique OTP codes that can be used for verification purposes in place of an SMS. Once an OTP code has been used, it cannot be used again, and if all 5 codes have been utilized, the customer has the option to regenerate a new set of codes. This redundant option allows for flexibility in the event that a customer is unable to receive SMS messages.
Viewing Records
Both the store and the customer have the option to view their records by navigating to the appropriate page and searching for the desired store or customer. Once located, the store or customer may click the "view record" button to access the record details. However, the store view may be limited based on the store's plan. For example, if the store has a premium plan, they will be prompted to select a preferred currency when they click the "view record" button. Similarly, the customer's view may also be impacted by the store's plan, with a prompt to select a currency potentially appearing when they view the record.