This is a React-based POS (Point of Sale) system that took me hell lot of time to make. It's a modern, full-featured POS that won't make you want to throw your computer out the window... most of the time. 😅
[] Fix the database schema with sub-collections [] Figure out a way for multiple users collaborating [] Fix when the State is updated and how it is updated(maybe real time reactive database) [] Fix the Design [] Fix Dark Mode [] Offer offline functionality [] Make the Electron App [] Host Appwrite locally [] Add Settings [] Figure out a way to set up organization [] Add organization Hierarchy (admin, user, employee etc etc...)
- users > document (userid, data)
- inventory > document (userid, data)
- sales > document (userid, data)
- purchases > document (userid, data)
- expenses > document (userid, data)
okay this is a exsisting project that i started during high seas but it has some major problems. One of the main problem is how frontend handles and updates data in our appwrite database. Sometimes if the state isn't updated properly or there is a network glictch or something like that, the whole data is overridden to default placeholders in the database(i am still nor sure what exactly causes this, I have tried to replicate this a couple of times but it happens very unpredictabally, i guess the result of less architecture planning initially and vibe coding) Also the database schema is too simple, I started with a very simple approach of storing everything in one document as a JSON blob. But it soon became \clear that this approach was not scalable and had many limitations. For the time being I have to fix this and I also wanna do alot of other changes as well listed here:
💡 Pro Tip (for all you hustling devs out there): There's always a certain breed of developers who dream of quick riches, and POS systems just happen to be the fastest way to turn code into money. Not saying anything... but iykyk. 😉
-
- Email Sign Up & Log In
- OTP Verification
- Password Recovery
-
- Add, Edit, and Delete Products
- Track Stock Levels
- Set Minimum Stock Alerts
- Import/Export Excel Functionality
- SKU Generation
- Multiple Price Points (Retail/Wholesale)
-
- Quick Product Search
- Cart Management
- Multiple Payment Methods
- Discount Handling
- Receipt Generation
- Sales History
-
- Stock Purchase Tracking
- Supplier Management
- Purchase History
- Cost Tracking
-
- Expense Tracking
- Category Management
- Expense Analytics
- Monthly Reports
-
- Sales Overview
- Low Stock Alerts
- Recent Transactions
- Daily Totals
-
- Coming soon!
Because we all love spending hours setting up projects, here's how to get this bad boy running:
- Clone the repo (if you can figure out Git)
- Run
npm installand pray to the dependency gods 🙏 - Rename
sample.envto.envand fill in your Appwrite IDs.
-
Create a new project in Appwrite (the easy part)
-
Create a database with these collections (here comes the fun):
inventory: For your precious productssales: Where the money magic happenspurchases: For tracking where your money goesexpenses: For crying about where else your money goesusers: For those brave souls using your system
Each one of these should have two attributes:
userId&data. Don't think too much about it—just do as I say, and your life will be easy. 🙄Remember to set permissions for anyone to create, read, update docs in here: (hehe)
-
Create a storage bucket for profile pictures (because everyone loves a good selfie)
-
Enable email/password authentication (keep those hackers at bay!)
-
Integrate a platform:
- Set your platform to
localhostfor development. - Update it to your domain name when deploying (e.g.,
https://yourdomain.com).
- Set your platform to
-
Update your
.envfile with all those lovely IDs.
Now you're ready to run npm run dev and watch your creation come to life! 🎉
Figma File. Dev mode is turned on.
- Appwrite
- React
- React Router
- Redux
- Tailwind CSS
- Vite
- react-otp-input
- recharts
- xlsx-js-style
- react-to-print
- react-toastify
- browser-image-compression
- Vercel
- DriverJs
Don't freak out—these also include some packages. 😅
- Icons from Flaticons (because who has time to make their own?)
- Shoutout to Bolt, ChatGPT, and CoPilot for helping throughout the project. 🤝 (what the hell am I doing?)
Licensed under MIT, so I won't be responsible if it breaks or someone messes up the database. 😎


