Inspiration
he inspiration for RegApp came from a desire to tackle a real-world challenge faced by countless entrepreneurs in emerging markets, particularly across Africa. Starting a business often involves navigating a complex and fragmented maze of regulatory bodies, paperwork, and requirements that can be daunting, especially for those without easy access to desktop computers or reliable internet. I wanted to build a tool that puts the power of business registration directly into the hands of the user, on the device they use most: their mobile phone. RegApp was designed to be a mobile-first, offline-capable Progressive Web App (PWA) that simplifies this process into a single, streamlined experience.
What it does
RegApp is a one-stop platform that allows users to: Select their country and the specific regulatory body they need to interact with (e.g., CAC in Nigeria, CIPC in South Africa). Fill out complex, multi-step application forms with built-in data persistence. Upload required documents directly from their phone. Work completely offline. All data and document uploads are queued securely using IndexedDB and are automatically submitted by a background Service Worker when the user's connection is restored. Receive real-time status updates on their applications and document validity. can submit text information via USSD
How we built it
I built RegApp as a full-stack application using a lightweight, powerful, and modern stack perfect for an MVP. Backend: The API server was built with Python and the Flask micro-framework. I chose Flask for its simplicity and flexibility, which allowed for rapid development of the API endpoints for user authentication, application submission, and document handling. For the database, I used SQLite, as it requires no separate server and is perfectly integrated with Python, making it ideal for a self-contained and easy-to-deploy application. Frontend: The user interface is a "vanilla" JavaScript application built with HTML5 and CSS3. I intentionally avoided heavy frameworks like React or Angular to keep the application lightweight, fast, and to demonstrate a deep understanding of core web technologies. The frontend was built as a Progressive Web App (PWA) from the ground up. Offline Functionality: The core of the PWA's power lies in its Service Worker. I implemented a robust caching strategy to make the entire application shell available offline. For handling offline form submissions and file uploads, I used the Background Sync API and the IndexedDB API to create a persistent, transactional queue that guarantees no data is ever lost
Challenges we ran into
Building a full-stack PWA from scratch was an incredible learning experience, and the biggest challenges proved to be the most valuable lessons. Mastering Cross-Origin Resource Sharing (CORS): My biggest challenge was the classic Failed to fetch error. Initially, I ran the frontend and backend on two separate servers (localhost:5500 and localhost:5000), which forced me to dive deep into how browsers handle security with CORS. I first solved this by correctly configuring the Flask-Cors library on the backend. However, for a more robust and simpler MVP, I re-architected the application to a single-server model, where Flask serves both the API and the frontend files. This elegant solution completely eliminated CORS issues and simplified the deployment process. The Importance of a Clean Environment: I faced several Could not import 'app' and no such table errors. These challenges taught me the critical importance of a clean project structure (separating code from data), the proper use of Python virtual environments (venv), and the necessity of setting environment variables like FLASK_APP correctly. Debugging these issues solidified my understanding of how a web framework boots up and interacts with its environment. Robust Offline Data Handling: I learned that while localStorage is simple, it is not the right tool for mission-critical data that a Service Worker needs to access. I migrated the offline queueing logic from localStorage to IndexedDB, which is the industry-standard, asynchronous, and transactional database available in the browser, making the offline feature truly reliable. Built with Languages: Python, JavaScript (ES6+), HTML5, CSS3, SQL Backend Framework: Flask Database: SQLite Frontend Technologies: Progressive Web App (PWA) Service Workers Background Sync API IndexedDB API Fetch API Development Environment: Python Virtual Environment (venv), VS Code Key Python Libraries: Flask, Werkzeug
Accomplishments that we're proud of
I struggled a bit given that im still new to software Development but I manged to get my idea out there alone without a team
What we learned
I need to use specific technologies to make sure the app is scalable
What's next for Regipoint
- apporaching service provider to ensure the USSD feature works
- approach regulatory bodies and try and connect my database with thiers to make the appllications possible
- getting into contact with mutiple regulatory bodies and listing them in the app so that I can cover as much counties as possible
- Use highly scalable technologies like Django , React.TS and revamping the front end into something professional looking
Log in or sign up for Devpost to join the conversation.