# Project Overview: Desa+ Desa+ is a mobile application built with React Native and Expo, designed to facilitate management and communication within villages/communities. It aims to streamline village administration, inter-community communication, and the management of essential information. ## Key Features: - Village announcements and information - Community discussion forum - Village activity calendar - Village documentation and archives - Project and task management - Member and organizational structure management - Push notifications for important updates - Verification and authentication features ## Technologies Used: - **React Native**: Cross-platform mobile development framework. - **Expo**: Platform for React Native application development. - **Firebase**: Backend services including Authentication, Realtime Database, and Cloud Messaging. - **Redux Toolkit**: State management. - **React Navigation**: Application navigation. - **TypeScript**: For type safety. ## Building and Running: ### Installation 1. **Clone the repository:** ```bash git clone cd mobile-darmasaba ``` 2. **Install dependencies:** ```bash npm install ``` 3. **Configure environment variables:** Create a `.env` file in the root directory and add the following variables: ``` URL_API= URL_OTP= URL_STORAGE= URL_FIREBASE_DB= PASS_ENC= WA_SERVER_TOKEN= IOS_GOOGLE_SERVICES_FILE= ``` ### Running the Application - **Start development server:** ```bash npx expo start ``` - **Run on Android emulator/device:** ```bash npm run android ``` - **Run on iOS simulator/device:** ```bash npm run ios ``` ### Build Production - **Build Android production package:** ```bash npm run build:android ``` ## Development Conventions: ### Project Structure: - `app/`: Main page files. - `components/`: Reusable UI components, categorized by feature (e.g., `announcement/`, `auth/`, `discussion/`). - `assets/`: Images and static assets. - `constants/`: Global constants. - `lib/`: Libraries and utilities. ### Contribution Guidelines: 1. Fork the repository. 2. Create a new feature branch (`git checkout -b feature/FeatureName`). 3. Commit your changes (`git commit -m 'Add FeatureName feature'`). 4. Push to the branch (`git push origin feature/FeatureName`). 5. Create a pull request. ## Platform Support: - ✅ Android - ✅ iOS - ❌ Web (not yet optimized)