![]() |
|---|
A full-stack e-commerce system built with PocketBase, Flutter, and Angular, designed for modern scalability and real-time performance.
This project is still under active development, but it already demonstrates advanced integration between a custom backend, mobile, and web interfaces.
PocketShop Fullstack is a multi-platform e-commerce solution featuring:
- ๐๏ธ PocketBase Backend โ for data storage, authentication, and APIs.
- ๐ฑ Flutter Mobile App โ for Android, iOS, Windows, Linux, and macOS.
- ๐ Angular Web App โ for the browser-based shopping experience.
All components are connected seamlessly through PocketBase REST APIs.
| Flutter App | <----> | PocketBase | <----> | Angular Web |
|---|---|---|---|---|
| (Mobile/Desktop) | (Backend & Admin) | (Frontend UI) |
Each module communicates via PocketBaseโs REST API, ensuring synchronized data between platforms.
| Main Screen | Main Screen |
|---|---|
![]() |
![]() |
| details Screen | comments part |
|---|---|
![]() |
![]() |
| Edit product(admin only) Screen | WishList Screen |
|---|---|
![]() |
![]() |
| Cart Screen | Search Screen |
|---|---|
![]() |
![]() |
| Mobile Preview |
|---|
![]() |
| DashBoard(Super admin) Screen | DashBoard(Super admin) Screen |
|---|---|
![]() |
![]() |
PocketShop-Fullstack/
โ
โโโ Backend-PB/ # PocketBase backend (data, hooks, storage)
โ โโโ pb_data/ # Database and storage
โ โโโ pb_hooks/ # Custom JavaScript logic for triggers and rules
โ โโโ swagger/ # API documentation
โ โโโ pocketbase # PocketBase server executable (Linux)
โ โโโ pocketbase.exe # PocketBase server executable (Windows)
โ
โโโ E-Commerce-Mobile-App/ # Flutter mobile app
โ โโโ lib/ # Application code
โ โโโ assets/ # Images and icons
โ โโโ android/, ios/, web/ # Platform-specific code
โ โโโ pubspec.yaml # Flutter dependencies
โ
โโโ Website-Angular/ # Angular web frontend
โโโ src/app/ # Components, pages, and services
โโโ angular.json # Angular config
โโโ package.json # Dependencies
| Collection | Description |
|---|---|
| users | Authentication system with roles (admin, user) |
| product | Product listings with images, categories, colors, and sizes |
| categories | Nested product categories with images |
| orders | User orders with statuses and linked discounts |
| discount_codes | Promo codes with limits and expiry dates |
| cart_item | Shopping cart items with user-product relations |
| wish_list_items | Wishlist management per user |
| reviews | Product reviews with rating and comments |
| address | User addresses (country, city, street, postal code) |
| banner | Home banners with images and links |
| available_countries_cites | JSON-based country and city availability |
| user_search | Search history for personalization |
๐พ PocketBase Admin Dashboard (demo)
- Email:
system@gmail.com- Password:
1234567890
โ ๏ธ Change these in production for security.
๐พ App or Web (demo email)
- Email:
ziad@gmail.com- Password:
1234567890
โ ๏ธ Change these in production for security.
Custom backend hooks are implemented in the pb_hooks folder to extend PocketBase functionality โ e.g., validation, custom logic, and automated triggers.
- ๐ User authentication & role-based access
- ๐ Product management (CRUD)
- ๐ณ Orders & checkout system
- ๐ฌ Reviews and ratings
- ๐ธ Image upload using PocketBase storage
- ๐ REST API + custom endpoints
- ๐จ Responsive UI with Flutter & Angular
- ๐งฉ Modular architecture for easy scaling
PocketShop extends PocketBase with custom routes to handle business logic beyond CRUD.
These are defined in main.pb.js and loaded automatically at runtime.
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/cart/add |
Add a product to a userโs cart |
GET |
/api/cart/:userId |
Retrieve cart details for a specific user |
POST |
/api/orders/checkout |
Create a new order and clear the cart |
GET |
/api/products/search/:query |
Search for products by keyword |
POST |
/api/auth/custom-login |
Custom user authentication logic |
Example (main.pb.js):
router.post('/api/cart/add', (c) => {
const userId = c.request.query.get('userId');
const productId = c.request.query.get('productId');
return c.json({ message: `Product ${productId} added to user ${userId}` });
});-
Clean Arch with Bloc pattern for state management
-
Modern UI built
-
PocketBase API integration
-
Categories, product details, cart, and search
-
Authentication and profile management
-
Cross-platform support: Android, iOS, Web, Windows, Linux, macOS
cd E-Commerce-Mobile-App
flutter pub get
flutter run-
Clean, responsive, and modern interface
-
Admin product management (add/edit)
-
Authentication and protected routes
-
Dynamic product catalog with search and filtering
-
Integrated with PocketBase APIs
cd Website-Angular
npm install
ng serve- Then open http://localhost:4200
cd Backend-PB
./pocketbase serve- PocketBase runs by default on
http://127.0.0.1:8090- Admin dashboard:
http://127.0.0.1:8090/_/
| Layer | Technology |
|---|---|
| Backend | PocketBase |
| Web Frontend | Angular |
| Mobile App | Flutter |
| Languages | Dart, TypeScript, JavaScript |
| Architecture | Clean Architecture (Flutter) |
| State Management | Bloc (Flutter) |
-
๐งพ Payment integration (Stripe/Paymob)
-
๐ง AI-powered product recommendations
-
๐ฆ Advanced admin dashboard for analytics
-
๐ช Push notifications for offers
๐งฑ PocketShop Fullstack is currently in development โ stay tuned for updates!
Full-Stack Dotnet Developer | Flutter & Angular Enthusiast
๐ง Email: Ziadsafwataraby@gmail.com
๐ Website: MyWebsite
๐ GitHub: @ZiadSafwat
This project is licensed under the MIT License.
Or support development ๐ โ Buy Me a Coffee











