{"id":31745392,"url":"https://github.com/shreshthmohan/foresty","last_synced_at":"2026-02-18T17:02:37.937Z","repository":{"id":318454732,"uuid":"1071353637","full_name":"shreshthmohan/foresty","owner":"shreshthmohan","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-17T17:09:01.000Z","size":170,"stargazers_count":0,"open_issues_count":6,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-30T08:28:32.246Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shreshthmohan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","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-10-07T08:29:13.000Z","updated_at":"2025-11-17T17:09:05.000Z","dependencies_parsed_at":"2025-10-07T10:25:23.993Z","dependency_job_id":"902376a7-8fe5-49f1-ae18-c62282db9e34","html_url":"https://github.com/shreshthmohan/foresty","commit_stats":null,"previous_names":["shreshthmohan/foresty"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/shreshthmohan/foresty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreshthmohan%2Fforesty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreshthmohan%2Fforesty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreshthmohan%2Fforesty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreshthmohan%2Fforesty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shreshthmohan","download_url":"https://codeload.github.com/shreshthmohan/foresty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shreshthmohan%2Fforesty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29587066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T16:55:40.614Z","status":"ssl_error","status_checked_at":"2026-02-18T16:55:37.558Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2025-10-09T12:55:18.887Z","updated_at":"2026-02-18T17:02:37.900Z","avatar_url":"https://github.com/shreshthmohan.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to React Router!\n\nA modern, production-ready template for building full-stack React applications using React Router.\n\n## Features\n\n- 🚀 Server-side rendering\n- ⚡️ Hot Module Replacement (HMR)\n- 📦 Asset bundling and optimization\n- 🔄 Data loading and mutations\n- 🔒 TypeScript by default\n- 🎉 TailwindCSS for styling\n- 📖 [React Router docs](https://reactrouter.com/)\n\n## Getting Started\n\n### Installation\n\nInstall the dependencies:\n\n```bash\npnpm install\n```\n\n### Database Setup\n\nThis project uses Cloudflare D1 for the database.\n\n1. Create the D1 database:\n\n```bash\npnpm wrangler d1 create foresty-db\n```\n\n2. Add the database binding to `wrangler.jsonc` (already configured):\n\n```jsonc\n\"d1_databases\": [\n  {\n    \"binding\": \"DB\",\n    \"database_name\": \"foresty-db\",\n    \"database_id\": \"f7836b69-2a9e-48ac-8bdc-f7be6aa495eb\"\n  }\n]\n```\n\n3. Apply migrations to local database:\n\n```bash\npnpm wrangler d1 migrations apply foresty-db --local\n```\n\n4. Apply migrations to remote database (when ready to deploy):\n\n```bash\npnpm wrangler d1 migrations apply foresty-db --remote\n```\n\n### Development\n\nStart the development server with HMR:\n\n```bash\npnpm run dev\n```\n\nYour application will be available at `http://localhost:5173`.\n\n## Previewing the Production Build\n\nPreview the production build locally:\n\n```bash\npnpm run preview\n```\n\n## Building for Production\n\nCreate a production build:\n\n```bash\npnpm run build\n```\n\n## Deployment\n\nDeployment is done using the Wrangler CLI.\n\nTo build and deploy directly to production:\n\n```sh\npnpm run deploy\n```\n\nTo deploy a preview URL:\n\n```sh\npnpm wrangler versions upload\n```\n\nYou can then promote a version to production after verification or roll it out progressively.\n\n```sh\npnpm wrangler versions deploy\n```\n\n## Styling\n\nThis template comes with [Tailwind CSS](https://tailwindcss.com/) already configured for a simple default starting experience. You can use whatever CSS framework you prefer.\n\n---\n\nBuilt with ❤️ using React Router.\n\n## Development Workflow\n\n### Local vs Remote Database\n\n- **Local development**: `pnpm dev` (uses local D1 database)\n- **Remote development**: `pnpm dev:remote` (uses production D1 database)\n\n### Database Migrations\n\nApply migrations to local database:\n```bash\npnpm wrangler d1 migrations apply foresty-db --local\n```\n\nApply migrations to remote database:\n```bash\npnpm wrangler d1 migrations apply foresty-db --remote\n```\n\n### Data Population Scripts\n\nThe project includes scripts to scrape data from Auroville Herbarium and populate the database.\n\n#### Single Species\n\nScrape and import a single species:\n```bash\n./scripts/scrape-and-import.sh \u003cspecies_id\u003e [--local|--remote|--both]\n```\n\nExamples:\n```bash\n# Import to local database only\n./scripts/scrape-and-import.sh 172 --local\n\n# Import to remote database only\n./scripts/scrape-and-import.sh 172 --remote\n\n# Import to both local and remote\n./scripts/scrape-and-import.sh 172 --both\n```\n\nOr use the individual npm scripts:\n```bash\n# Generate SQL for single species\npnpm db:generate-single 172\n\n# Populate local database\npnpm wrangler d1 execute foresty-db --local --file=scripts/populate-single.sql\n\n# Populate remote database\npnpm wrangler d1 execute foresty-db --remote --file=scripts/populate-single.sql\n```\n\n#### All Species\n\nScrape all species and populate database:\n```bash\n# For local database\npnpm db:populate-all\n\n# For remote database\npnpm db:generate-all\npnpm wrangler d1 execute foresty-db --remote --file=scripts/populate-all.sql\n```\n\n### Web Scraping\n\nThe project uses Scrapy to scrape plant species data. See [spider/README.md](spider/README.md) for detailed documentation.\n\nQuick commands (run from `spider/` directory):\n```bash\ncd spider\n\n# Get list of all species\nuv run scrapy crawl ah-spider -O species_list.json\n\n# Scrape specific species\nuv run scrapy crawl species -a species_id=172\n```\n\n### Database Queries\n\nFor common database queries and examples, see [docs/database.md](docs/database.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshreshthmohan%2Fforesty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshreshthmohan%2Fforesty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshreshthmohan%2Fforesty/lists"}