Introduction
ReggyPOS is a comprehensive Point of Sale system designed to assist businesses in managing various aspects of their business operations, If you want to start your own business of reselling POS Systems, ReggyPOS is the SAAS product you really need, our system is rich in features that your clients need and you can start your own startup easily.If you like this script, Please support us by rating us 5 stars (Rate us Here)
ReggyPOS - Point of sale system
Used Technologies
- Flutter/Dart
- Node.js (Express.js)
- MongoDB (Mongoose)
- Firebase (Support)
- Paystack and Stripe as the payment method for subscribers
- Google Maps API (This is Optional, to enable shops online discovery based on distance)
What you will get
- Mobile App Source code
- Backend Api Source codes
- Admin to manage shops, users, subscription packages and many other things
Core Features
This is a complete POS Sytems built with Flutter, Node.js and MongoDB with Rest API integration.Here is some core features of this SAAS mobile app
- Multi-Shop Management - you can manage multiple shops/businesses/branches from one single account
- Create product/service and set price, re-order levels, category,discounts,min selling price, whole sale and retail prices etc
- Import bulk products/services from an excel sheets
- Create taxable and non taxable products
- Create Quotations for stockin and purchases when you want to reorder products
- Perform periodic product count and generate reports
- Create/Manage badstock/spoilt products
- Transfer products from one shop to another
- Generate /print product and services barcodes.
- Create customers and maintain customers wallets
- Perform Sales in a Point of Sale, sell to individuals, walk in customers, wholesalers or dealers
- Credit, split sale,wallet sale and cash sales supported
- Create and maintain suppliers accounts
- Purchase from suppliers supported
- Cashflow - view/manage flow of cash in and out of the business filtering by date e.g bank deposits, capital,wallets movements and many others
- Reports - view Sales Reports, Credit Sales Reports,Due Sales Reports,Purchases Reports, Expenses Reports,income Reports,stock Reports and many others
- View product movemenst statistics based on a single product and filtered by date
- Create Attendants and assing them roles
- Sales & Online Discovery of shops around you for the shops to get online orders
- Expense Management
- On-Hold Sales and Cash Sales
- Comprehensive Reports and Pdf overview
- Each shop can customize their receipts
- Enable/disable online shop discovery
- Allow backup and set backup email intervals
- Thermal Printer Support
Admin Dashboard Features
- view products
- create subscription packages
- add/edit/delete product categories and measurement units
- view all shops registered and their subscriptions
- view all users who have registered, their number of shops and subscription plans
- Settings page to set payment gateway api keys, app name, emails smtp settings and many other administrative settings
Need Support?
If you have any questions about the script, please sent a email to us reggycodas@gmail.com or whatsup us at +254 791 334 234Installation
To run ReggyPOS Backend you will need couple of things setup first, Install Node version v16.20.2. if you already not installed. download from Here
NPM Packages:
- After downloading the source code, unzip it
- Open the VS Code Terminal/System Terminal
- Go to the folder (backend): (cd path/to/source code)
- Run: npm install, it will install all used packages for this backend.
- Make sure that there is no error.
After the npm packages are installed, make sure that you have a package.json file and check that you have the below lines under the scripts.
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js",
"generate-swagger": "swagger-jsdoc -d ./swagger.js -o ./swagger.json"
},
-
Rename
.env.example
to.env
-
Configure your MongoDB database. Watch this video on
MongoDB
. After configuring, you will find a MongoDB URI. Put that URI
in the
MONGO_URI
variable in your.env
file. -
The
JWT_SECRET
is a random value used for creating a secret token. You can use any value, but make sure it remains secret.
After configuration your .env file will look like this
PORT=5055
MONGO_URI=your mongodb uri
JWT_SECRET=alamsfdfsdfsdfsdrafdar!@#$0dlfgjgsdfdsfdsfds
Running the Backend
Now run npm run dev
to start your
backend on the local server with PORT 8000 or the PORT you have
specified. your api path is
https://localhost:8000
if you installed in your hosted server, your api path is
https://domain-name:8000
Installation
You need to have installed flutter in your computer, check the following link for the guide on how to do it Flutter installation
Run Mobile App Source Codes:
- After downloading the source code, unzip it
- Open the mobile app source code with the IDE of your choice, e.g VS Code/Android Studio IDE
-
Find and replace whole project package name, by default from the
source code you downloaded the package name is
com.reggypos.com replace it with your package name
e.g com.test.com
shortcut to copy and replace the package name in the entire project depends on the operating system you are using
MacOS -command + shift + R
Windows -ctrl + shift + R
-
Open Terminal of your IDE, see screenshot from Android Studio
- Run: flutter pub get in your terminal, it will install all used packages for this source code to run.
- Make sure that there is no error.
-
open
end_points.dart
from (mobile-app), path:(cd lib/services/end_points.dart) and add your api end point url you got when you installed the backend, e.g http:/localhost:8000 -
Create Firebae Project:
We need firebase to save product images
-
Open Firebase Website Firebase Console
- Click Go to Console link at the right top corner and login with your gmail account if you have not yet logged in
-
Click on create a project and enter your
project name then click next
- Configure both IOS and Android Apps by clicking Android Icon/IOS icons, enter app package name you configured during "mobile app set up" and then click next.
- Download google-services.json or GoogleService-Info.plist for Android and IOS Respectively then click next to the other options
-
Copy the downloaded google-services.json to
project path:
mobile app source code/android/app/
-
Copy the downloaded
GoogleService-Info.plist to project path:
mobile app source code/ios/Runner/
-
Open Firebase Website Firebase Console
Run Mobile App
In the android studio, click on the available devices at the top bar, select the device you want to run the app on, if you want to run it on your emulator, select in the drop down the emulator you want to run it in, then click the Play button next to it.Paystack Integration
Create a Paystack account to be able to use it in the app to collect subscription fees Paystack setup
Steps:
- Create Paystack account
- Go to the settings page and copy your secret key and paste in the admin dashboard under settings in the field called PayStack Secret Key and save the changes and you are reasy to start collectin payment with paystack
- Remember to switch on live mode on paystock dashboard when going live on production
Stripe Integration
Create a Stripe account to be able to use it in the app to collect subscription fees. Stripe setup
Steps:
- Create Stripe account
- Go to the settings page and copy your secret key and pblic key, paste them in the admin dashboard under settings in the fields Stripe Publishable Key and Stripe Secret Key respectively and save the changes and you are reasy to start collectin payment with stripe
- Remember to switch on live mode on stripe dashboard when going live on production
Installation
As you already installed Node on you machine, so no need to re-install again, Just check you installed properly by node --version
NPM Packages:
- After downloading the template, unzip it
- Open the VS Code Terminal/System Terminal
- Go to the folder (admin): (cd path/to/admin)
- Run: npm install, it will install all used packages for this admin.
- Make sure that there is no error.
-
Rename
.env.example
to.env
After configuration your .env file will look like this
REACT_APP_API_BASE_URL=http://localhost:8000
Running the Admin
Now run npm run dev
to start your
backend on the local server, then open the following link in your browser:
http://localhost:4000
Login with default admin email and password, email: admin@admin.com, password:123456
Settings Page
Here are the description of settings page in the admin dashboard and their work.
- App Name: This will change the app name in the emails and receipts
- Allow Strip: To enable or disable stripe as a payment method
- Stripe Secret Key: Enter your stripe secret key
- Stripe Publishable Key: Enter your stripe publishable key
- Allow Paystack: To enable or disable paystack as a payment method
- Paystack Secret Key: Enter your paystack secret key
- Allow Shop Discovery: To enable or disable shop discovery
- Google Api Key: Enter your google api key to for shoop online discovery to work
- SMTP TYPE: Enter your smtp type by default its gmail
- SMTP EMAIL: Enter your smtp email
- SMTP PASSWORD: Enter your smtp password
- IOS version: Enter your ios app latest version for ios users too know there is a new update
- Android version: Enter your android app latest version for android users too know there is a new update
- Force Update: To enable or disable force update
Run On Live server
As a next.js project vercel is recommended for deployment because If you deploy on vercel then it will automatically do everything for us and there will be no need for customization.
Here is simple guide for deploying backend, store and admin on vercel:
- Create a GitHub account, go to Vercel and sign up with that GitHub account.
- Create three private repositories on GitHub, then push your backend code in one and store code in one, and admin code in another repository.
- Watch this video deploy on vercel, do according to.
-
When you import your GitHub repository on vercel by creating a
project, you will see an option for Environment Variables, just
click on that and give you a local .env all
variable with the value. then click on deploy.
Note first you will need to import and deploy backend, so that you can use that backend live url as store (NEXT_PUBLIC_API_BASE_URL) and admin(REACT_APP_API_BASE_URL) . - After the backend is deployed successfully, you will find a URL for your API route that will like this https://kachabazar.vercel.app/, and now change that like this https://kachabazar.vercel.app/api, or https://kachabazar.vercel.app/api/products, to see the products imported or not and use this as a NEXT_PUBLIC_API_BASE_URL and REACT_APP_API_BASE_URL when you deploy your store and admin project.
- Now create another two projects for store and admin. Deploy one by one same as backend project and put all .env.local variable On Environment Variables section before clicking on deploy button, then click deploy, it will take some time for build and after that build, you will see you live version of store and admin.
- If you do accordingly, then everything will be okay, for now when you make any changes on your local file, you just need to push your code on GitHub, vercel will automatically detect those changes and will redeploy your project with updated features.
You will find many videos on youtube and also articles on google about how to deploy next.js and express apps on vercel.
Change Logo
- Login to the system as Admin
- https://yourdomain.com/dashboard
- Go to Appearance > Header
- Update the field with your changes
- Click Save Changes
Configure Homepage
Here you can configure all the sections of homepage of the website
- Login to the system as Admin
- https://yourdomain.com/dashboard
- Go to Appearance > Homepage
- Update the field with your changes
Change Admin Logo
- Login to the system as Admin
- https://yourdomain.com/dashboard
- Go to System Settings > General Settings
- Update the field with your changes
- Click Save Changes
Product CRUD (Create, Read, Update, Delete)
You can add with and without Combination product from here with all necessary information. Also you can import and export bulk product data from here. When you adding product select the language from Select option on drawer right corner for adding your preferred language. And you can update this data according your need.
- Login to the system as Admin
- Go to Catalog tab > Product
- Open the drawer by clicking add product button
- Then fill the information and save
- To Edit Product click on Edit Icon
- To Delete Product click on Delete Icon
- To Bulk action click on Bulk action button
- To export different format by clicking on export button
- To import different format by clicking on import button
Category CRUD (Create, Read, Update, Delete)
You can add multi-level parent category and child-category from here with all necessary information. Also you can import and export bulk data from here. When you adding product select the language from Select option on drawer right corner for adding your preferred language. And you can update this data according your need.
- Login to the system as Admin
- Go to Catalog tab > Category
- Open the drawer by clicking add category button
- Then fill the information and save
- To Edit Category click on Edit Icon
- To Delete Category click on Delete Icon
- To Bulk action click on Bulk action button
- To export different format by clicking on export button
- To import different format by clicking on import button
Attribute CRUD (Create, Read, Update, Delete)
You can add attribute from here with all necessary information. Also you can import and export bulk data from here. When you adding product select the language from Select option on drawer right corner for adding your preferred language. And you can update this data according your need.
- Login to the system as Admin
- Go to Catalog tab > Attribute
- Open the drawer by clicking add attribute button
- Then fill the information and save
- To Edit Attribute click on Edit Icon
- To Delete Attribute click on Delete Icon
- To Bulk action click on Bulk action button
- To export different format by clicking on export button
- To import different format by clicking on import button
Coupon CRUD (Create, Read, Update, Delete)
You can add coupon from here with all necessary information. Also you can import and export bulk data from here. When you adding product select the language from Select option on drawer right corner for adding your preferred language. And you can update this data according your need.
- Login to the system as Admin
- Go to Catalog tab > Coupon
- Open the drawer by clicking add coupon button
- Then fill the information and save
- To Edit Coupon click on Edit Icon
- To Delete Coupon click on Delete Icon
- To Bulk action click on Bulk action button
- To export different format by clicking on export button
- To import different format by clicking on import button
Language CRUD (Create, Read, Update, Delete)
You can add language from here with all necessary information. This language will show in store language select drop-down, also in all dynamic data adding drawer.
- Login to the system as Admin
- Go to Catalog tab > Language
- Open the drawer by clicking add language button
- Then fill the information and save
- To Edit Language click on Edit Icon
- To Delete Language click on Delete Icon
- To Bulk action click on Bulk action button
Currency CRUD (Create, Read, Update, Delete)
You can add currency from here with all necessary information. This currency will shown in setting currency select option.
- Login to the system as Admin
- Go to Catalog tab > Currency
- Open the drawer by clicking add currency button
- Then fill the information and save
- To Edit Currency click on Edit Icon
- To Delete Currency click on Delete Icon
- To Bulk action click on Bulk action button
Add Setting
You can add setting from here with all necessary information. all setting data will apply in admin and store. like currency, data format, time zone. And other information will shown in customer order invoice.
- Login to the system as Admin
- Go to Setting tab
- Then fill the information and save
Edit Profile
You can update admin/staff info from here with all necessary information. Also can be update from staff drawer.
- Login to the system as Admin
- Go to Catalog tab > Edit Profile
- Then fill the information and save