{"id":34498654,"url":"https://github.com/abrahamgalue/proyecto-tesis","last_synced_at":"2026-04-07T20:31:08.812Z","repository":{"id":314666868,"uuid":"940833266","full_name":"abrahamgalue/proyecto-tesis","owner":"abrahamgalue","description":"Institutional Thesis Repository - Dr. Rafael Belloso Chacín Private University (URBE)","archived":false,"fork":false,"pushed_at":"2025-12-15T13:08:14.000Z","size":9726,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-25T13:13:20.169Z","etag":null,"topics":["eas","expo","iot","react-native","supabase"],"latest_commit_sha":null,"homepage":"https://proyecto-tesis-sensors-api.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abrahamgalue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-28T22:01:02.000Z","updated_at":"2025-12-14T14:32:07.000Z","dependencies_parsed_at":"2025-09-14T00:22:41.747Z","dependency_job_id":"3cf27996-1a6b-47e8-bc7a-6b06d79d38f0","html_url":"https://github.com/abrahamgalue/proyecto-tesis","commit_stats":null,"previous_names":["abrahamgalue/proyecto-tesis"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/abrahamgalue/proyecto-tesis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fproyecto-tesis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fproyecto-tesis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fproyecto-tesis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fproyecto-tesis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abrahamgalue","download_url":"https://codeload.github.com/abrahamgalue/proyecto-tesis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fproyecto-tesis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31528249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eas","expo","iot","react-native","supabase"],"created_at":"2025-12-24T01:54:47.001Z","updated_at":"2026-04-07T20:31:08.779Z","avatar_url":"https://github.com/abrahamgalue.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align='center'\u003e\n\n# Green Wall Manager 🌳\n\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/e020cc76-7635-448b-b2eb-88c7b091e6c9\" alt=\"App Icon\" width=\"128\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/7d06363a-e13e-4cee-ab18-6a679ba26f27\" alt=\"Screenshot 1\" width=\"200\"/\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/d5074e0f-2eb3-48fa-8a02-0d52719fc19c\" alt=\"Screenshot 2\" width=\"200\"/\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/16db1582-136a-4192-af3b-28ff702c8544\" alt=\"Screenshot 3\" width=\"200\"/\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/e9b76873-e98f-4d6d-a23f-fc1f2e8c963e\" alt=\"Screenshot 4\" width=\"200\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/abrahamgalue/proyecto-tesis/releases/latest\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/v/release/abrahamgalue/proyecto-tesis?include_prereleases\u0026logo=github\u0026style=for-the-badge\u0026label=Latest%20Release\u0026labelColor=072b31\" alt=\"Latest Release\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/abrahamgalue/proyecto-tesis/releases\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/downloads/abrahamgalue/proyecto-tesis/total?style=for-the-badge\u0026labelColor=072b31\" alt=\"Total Downloads\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n**Green Wall Manager** is a modern indoor garden app for mobile, built with Expo. It's designed to make monitoring and controlling lights, pumps, weather, and notifications simple and seamless.\n\n## ✨ Core Features\n\n- **Weather Dashboard**: Current conditions, forecasts, and helpful alerts.\n- **Device Control**: Manage lights and pumps with real-time status and quick actions.\n- **Notifications**: Stay informed about weather changes and device events.\n- **Authentication \u0026 Account**: Sign in securely and manage your profile.\n- **Settings**: Customize preferences and app behavior.\n- **Modern UI**: Clean, responsive design with smooth animations and dark/light modes.\n- **Cross-Platform**: Works on Android, iOS, and the web with Expo.\n\n## 🛠️ Tech Stack \u0026 Architecture\n\n- **Language**: TypeScript + JavaScript with [Expo](https://expo.dev/) and [React Native](https://reactnative.dev/) for cross‑platform development.\n- **Navigation**: [Expo Router](https://docs.expo.dev/versions/latest/sdk/router/) for file‑based navigation and deep linking.\n- **State**: [Zustand](https://zustand.docs.pmnd.rs/getting-started/introduction) with persistence via [AsyncStorage](https://react-native-async-storage.github.io/async-storage/) for lightweight global state.\n- **Forms/Validation**: [React Hook Form](https://react-hook-form.com/) + [Zod](https://zod.dev/) for type‑safe forms and schema validation.\n- **Data Fetching**: [TanStack Query](https://tanstack.com/query/latest) for caching, background refetching, and mutation management.\n- **Auth**: [Supabase](https://supabase.com/) for authentication and backend data services.\n- **UI**: [NativeWind](https://www.nativewind.dev/) / [Tailwind CSS](https://tailwindcss.com/) for utility‑first styling and theme support (dark/light).\n- **Images**: [expo-image](https://docs.expo.dev/versions/latest/sdk/image/) for performant, cached image rendering.\n- **Animations**: [React Native Reanimated](https://docs.swmansion.com/react-native-reanimated/) for smooth, native‑driven animations and gestures.\n- **Testing**: [Jest](https://jestjs.io/) + [Testing Library for React Native](https://callstack.github.io/react-native-testing-library/index) for unit and UI tests.\n- **Bundler**: [Metro](https://metrobundler.dev/) for fast development builds and transforms.\n- **Runtime**: [Docker Compose](https://docs.docker.com/compose/) for backend orchestration.\n- **Database**: [PostgreSQL](https://www.postgresql.org/) managed by Supabase.\n- **APIs**: [Supabase RESTful \u0026 Realtime APIs](https://supabase.com/docs/guides/api) for data access and synchronization. [ExpressJS](https://expressjs.com/) APIs for sensors and weather forecasting.\n- **Studio**: [Supabase Studio](https://supabase.com/docs/guides/self-hosting/docker#accessing-supabase-studio) available locally on port 8000.\n\n## 🚀 Getting Started\n\nTo get a local copy up and running, follow these simple steps.\n\n### 📦 Installation\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/abrahamgalue/proyecto-tesis.git\n   cd proyecto-tesis\n   ```\n\n2. **Install dependencies**\n\n   ```bash\n   bun install\n   ```\n\n   This will install all dependencies across the monorepo (mobile app and APIs).\n\n### Prerequisites\n\n- Node.js LTS.\n- Bun.\n- For device/simulator:\n  - Android Studio (SDK 34+) or Xcode (for iOS simulators).\n  - Expo Go or a [custom dev client](https://github.com/abrahamgalue/proyecto-tesis/releases).\n- Git\n- Docker (Windows, macOS, or Linux)\n\n### 📱 Frontend Setup\n\n1. **Environment variables**\n   Inside `apps/green-wall-manager`, copy `.env.example` to `.env` and edit it:\n\n   ```bash\n   cd apps/green-wall-manager\n   cp .env.example .env\n   ```\n\n   Inside, set your Supabase connection details and API endpoint URLs:\n\n   ```bash\n   EXPO_PUBLIC_SUPABASE_URL=YOUR_REACT_NATIVE_SUPABASE_URL\n   EXPO_PUBLIC_SUPABASE_KEY=YOUR_REACT_NATIVE_SUPABASE_PUBLISHABLE_KEY\n\n   EXPO_PUBLIC_FORECAST_API_URL=http://localhost:3000/api/forecast\n   EXPO_PUBLIC_SENSOR_API_URL=http://localhost:3001/api/sensors\n   EXPO_PUBLIC_WEATHER_API_URL=https://cloud.urbe.edu/web/v1/core/weather\n   ```\n\n   **Supabase Configuration:**\n   - **Cloud Supabase**: Use your cloud project URL (e.g., `https://your-project.supabase.co`)\n   - **Local Supabase (Docker)**: Configure based on your environment:\n     - Android Emulator: `http://10.0.2.2:8000`\n     - Physical Android Device: `http://YOUR_IPV4:8000` (get IPv4 with `ipconfig` on Windows)\n     - iOS Simulator: `http://localhost:8000`\n\n   **API Endpoints Configuration:**\n   - The example URLs use `localhost`, which works for iOS Simulator and Expo Go\n   - For **Android Emulator**, replace `localhost` with `10.0.2.2`\n   - For **Physical Android Device** (development build), replace `localhost` with your computer's IPv4 address\n   - Your device must be on the same local network as your computer\n\n   See `apps/green-wall-manager/README.md` for detailed configuration instructions.\n\n2. **Start the app**\n   - From the project root, start all apps (mobile + APIs):\n     ```bash\n     bun run start\n     ```\n   - Or start only the mobile app:\n     ```bash\n     bun run start:mobile\n     ```\n   - Or navigate to the app folder for specific platform scripts:\n\n     ```bash\n     cd apps/green-wall-manager\n\n     bun run ios\n     bun run android\n     ```\n\n### 🗄️ Backend Setup\n\n#### Supabase (Database \u0026 Auth)\n\n1. **Environment variables**\n   Inside `infra/supabase`, copy `.env.example` to `.env` and edit it:\n\n   ```bash\n   cd infra/supabase\n   cp .env.example .env\n   ```\n\n   Adjust any variables as needed (e.g., passwords, ports).\n\n2. **Start Supabase locally**\n   From the project root:\n\n   ```bash\n   bun run db:start\n   ```\n\n3. **Stop Supabase**\n\n   ```bash\n   bun run db:stop\n   ```\n\n4. **Access Supabase Studio**\n   - URL: [http://localhost:8000](http://localhost:8000)\n   - Default credentials:\n     ```\n     Username: supabase\n     Password: this_password_is_insecure_and_should_be_updated\n     ```\n   - Change these immediately as documented here:\n     - [Dashboard authentication](https://supabase.com/docs/guides/self-hosting/docker#dashboard-authentication)\n     - [Securing your services](https://supabase.com/docs/guides/self-hosting/docker#securing-your-services)\n\n5. **Generate API keys**\n   Follow these guides to generate new anon and service keys:\n   - [Generate and update keys](https://supabase.com/docs/guides/self-hosting/docker#update-api-keys)\n\n   Replace `ANON_KEY` and `SERVICE_ROLE_KEY` in `infra/supabase/docker/.env`.\n\n6. **Create your first user**\n   Once the dashboard is running, create a user in the **Authentication** section — this user's credentials will be used to log in to the mobile app.\n\n#### ExpressJS APIs (Forecast \u0026 Sensors)\n\nBoth APIs use ExpressJS and follow the same setup pattern.\n\n1. **Environment variables**\n\n   For the **forecast-api**:\n\n   ```bash\n   cd apps/forecast-api\n   cp .env.example .env\n   ```\n\n   Edit `.env` and set:\n\n   ```bash\n   PORT=3000\n   FORECAST_API_URL=https://open-meteo.com/en/docs\n   ```\n\n   For the **sensors-api**:\n\n   ```bash\n   cd apps/sensors-api\n   cp .env.example .env\n   ```\n\n   Edit `.env` and set:\n\n   ```bash\n   PORT=3001\n   ```\n\n   The example values are provided for reference; adjust them based on your needs.\n\n2. **Start the APIs**\n\n   From the project root:\n\n   ```bash\n   # Start all apps (mobile + APIs):\n   bun run start\n\n   # Start forecast API\n   bun run start:api-forecast\n\n   # Start sensors API\n   bun run start:api-sensors\n\n   # Or use dev mode with hot reload\n   bun run dev:api-forecast\n   bun run dev:api-sensors\n   ```\n\n   Or navigate to each API folder to run scripts directly:\n\n   ```bash\n   cd apps/forecast-api\n   bun run start  # or bun run dev\n\n   cd apps/sensors-api\n   bun run start  # or bun run dev\n   ```\n\n## 🧪 Testing\n\n- Run all frontend tests from the root:\n\n  ```bash\n  bun run test\n  ```\n\n- You can also run test scripts directly inside `apps/green-wall-manager` for more granular control:\n  ```bash\n  cd apps/green-wall-manager\n  bun run test\n  bun run testDebug\n  bun run testFinal\n  ```\n\nIn the future, the test setup can be extended to support multiple apps in the monorepo.\n\n## 🎨 Linting, Formatting \u0026 Colors\n\n- Run lint:\n\n  ```bash\n  bun run lint\n  ```\n\n- Auto-fix lint issues:\n  ```bash\n  bun run lint:fix\n  ```\n\nCurrently, this only applies to `apps/green-wall-manager`, but it can be expanded to include other workspaces in the future.\n\n- Generate design tokens (colors) and auto-fix generated file:\n  ```bash\n  bun run generate-colors\n  ```\n\nOutput is written to [`apps/green-wall-manager/constants/generatedColors.ts`](apps/green-wall-manager/constants/generatedColors.ts). Tailwind tokens are configured in [`apps/green-wall-manager/tailwind.config.js`](apps/green-wall-manager/tailwind.config.js).\n\n## 📂 Project Structure\n\n```bash\ngreenwall-monorepo/\n├── apps\n│   ├── esp32                  # ESP32 firmware\n│   ├── forecast-api           # ExpressJS weather forecast API\n│   ├── green-wall-manager     # Expo mobile app\n│   └── sensors-api            # ExpressJS sensors data API\n├── bun.lock                   # Bun lockfile\n├── bunfig.toml                # Bun configuration\n├── infra\n│   └── supabase               # Supabase infrastructure\n├── package.json               # Root workspace setup\n└── tsconfig.json              # TS configuration\n```\n\n## License\n\nSee [LICENSE](LICENSE).\n\n## Contributing Guidelines\n\nSee [CONTRIBUTING](CONTRIBUTING.md).\n\n## Code of Conduct\n\nSee [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabrahamgalue%2Fproyecto-tesis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabrahamgalue%2Fproyecto-tesis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabrahamgalue%2Fproyecto-tesis/lists"}