Smart Panchayat is a digital solution designed to modernize and streamline Panchayat-level governance. It aims to provide a centralized platform for managing village-level administration, public services, and citizen engagement. The project focuses on digitizing records, improving service delivery, and enhancing transparency through technology.
- User Management (CRUD operations, role-based access control)
- Shop Management (add, update, view shops)
- Product Management (add, update, delete, view products; manage product categories)
- Order Management (add, update, view order history)
- Shipment Management (Track shipments, add shops to shipments, manage shipment products)
- Category Management (add, update, delete categories)
- Agent Management (CRUD operations)
- Secure Authentication (Firebase authentication)
- Robust Data Validation (using Joi)
- Detailed Logging (using Winston)
- AWS S3 Integration for file storage
- Database Migrations (using Sequelize)
- Unit Tests for various services
SmartPanchayat-App/
├── .expo/ # Expo internal files (auto-generated)
├── .vscode/ # VS Code workspace settings
├── android/ # Android native project (Expo prebuild)
├── node_modules/
│
├── src/
│ ├── app/ # Expo Router (file-based routing)
│ │ ├── (agent)/ # Agent flow routes
│ │ ├── (shop)/ # Shop flow routes
│ │ ├── (tabs)/ # User flow
│ │ │
│ │ ├── auth/ # Authentication screens
│ │ ├── location/ # Location-related screens
│ │ ├── order/ # Order screens
│ │ ├── product/ # Product screens
│ │ ├── profile/ # User profile screens
│ │ ├── search/ # Search screens
│ │ ├── settings/ # App settings screens
│ │ ├── shipment/ # Shipment screens
│ │ ├── user/ # User-related screens
│ │ │
│ │ ├── _layout.tsx # Root layout (navigation wrapper)
│ │ ├── +not-found.tsx # 404 / fallback screen
│ │ ├── index.tsx # App entry screen
│ │ ├── ThemeBridge.tsx # Theme ↔ navigation bridge
│ │ └── ThemeContext.tsx # Theme context provider
│ │
│ ├── assets/ # Images, fonts, icons
│ │
│ ├── components/ # Reusable UI components
│ │ ├── category/
│ │ ├── drawer/
│ │ ├── farmers/
│ │ └── ...
│ │
│ ├── constants/ # App-wide constants
│ │ ├── colors.ts
│ │ ├── fonts.ts
│ │ ├── sizes.ts
│ │ └── routes.ts
│ │
│ ├── data/ # Static/mock data
│ │
│ ├── hooks/ # Custom React hooks
│ │ ├── useAuth.ts
│ │ ├── useTheme.ts
│ │ └── useNetwork.ts
│ │
│ ├── locales/ # i18n / translations
│ │ ├── English.json
│ │ └── Kannada.json
│ │
│ ├── redux/ # Redux Toolkit store
│ │ ├── feature/ # Feature-based slices
│ │ │ ├── category/
│ │ │ │ ├── categorySlice.ts
│ │ │ │ └── categoryActions.ts
│ │ │ │
│ │ │ ├── order/
│ │ │ ├── products/
│ │ │ ├── shipments/
│ │ │ ├── shop/
│ │ │ └── user/
│ │ │
│ │ └── store.ts # Redux store configuration
│ │
│ ├── scripts/ # Utility scripts (build, clean, etc.)
│ │
│ ├── styles/ # Global styles & themes
│ │ └── global.css
│ │
│ └── utils/ # Helper functions
│ ├── secureAuth.ts # AsyncStorage helpers
│ ├── i18n.ts
│ └── responsive.ts
│
├── .gitignore
├── app.json # Expo app configuration
├── babel.config.js # Babel config
├── eas.json # Expo Application Services config
├── eslint.config.js # ESLint rules
├── expo-env.d.ts # Expo TypeScript types
├── metro.config.js # Metro bundler config
├── package.json
└── README.md-
- Framework
- React Native
- Expo
- Expo Router
-
- State Management
- Redux (Redux Toolkit)
-
- Authentication
- Firebase OTP authentication
-
- Storage
- Expo SecureStore (secure token storage)
- AsyncStorage (language preference & theme storage)
-
- Multi Language
- i18n
-
- Networking
- axios
1. Clone the repository
git clone <repository-url>
cd <project-folder>2. Install dependencies
npm install3. Start the Expo development server
npx expo start4. Run the app
# Android
npx expo start --android
# iOS (macOS only)
npx expo start --ios5. Run EsLint
npm run lint6. Build the app (optional)
# Android build
npx expo run:android
# iOS build
npx expo run:ios