尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
CampCue is a full-stack campground review platform. Search and filter
real U.S. campgrounds pulled live from the National Park Service's
Recreation.gov API, browse each one's real photos and location on Google
Maps, and leave a rating and review. No fake data, no stock photos - the
listings are backed by the same public dataset recreation.gov itself
runs on (currently 65 real campgrounds across CA/WA/NY, each with a real
photo).檢視完整 README ↗Note: This repository is a rebuilt version of the "Campground Review System" project listed on my resume, re-implemented with current tools and libraries.
CampCue is a full-stack campground review platform. Search and filter real U.S. campgrounds pulled live from the National Park Service's Recreation.gov API, browse each one's real photos and location on Google Maps, and leave a rating and review. No fake data, no stock photos - the listings are backed by the same public dataset recreation.gov itself runs on (currently 65 real campgrounds across CA/WA/NY, each with a real photo).
Live app: https://campcue.web.app
Stack: React (Vite) · Django REST Framework · MongoDB (geospatial
queries via a 2dsphere index) · pandas ETL pipeline · Google Maps
JavaScript API · deployed on Cloud Run + Firebase Hosting + MongoDB Atlas,
entirely on free tiers.
Rebuilt from this resume entry:
Campground Review System Independent Full-Stack Developer
data_pipeline/fetch_ridb_data.py --> real_campgrounds.json --> MongoDB Atlas ("campgrounds" collection)
|
v
backend/ (Django + DRF, pymongo) --- REST API --- frontend/ (React + Vite)
Cloud Run | Firebase Hosting
2dsphere index |
(geospatial "nearby" search) Google Maps JS API
(map view, pins, photos)
data_pipeline/ - two independent pieces:
fetch_ridb_data.py pulls real campground listings (names,
coordinates, activities, photos) from Recreation.gov's public RIDB
API. This is the app's actual data source - currently 65 campgrounds
across CA/WA/NY, each with a real photo.generate_sample_data.py / legacy_manual_merge.py /
clean_and_load.py / benchmark.py are a synthetic demo,
unrelated to the live app's data, that models the messy
multi-facility-spreadsheet problem the pipeline bullet describes and
measures the pandas pipeline's speedup over a naive one (~65% faster,
consistent with the resume's 67% claim). See
data_pipeline/README.md for both.backend/ - Django + Django REST Framework. Reads/writes MongoDB
directly via pymongo (no ORM) so the data layer matches what the
pipeline produces. Endpoints: search/filter, facets (distinct
states/amenities for the UI's filter dropdowns), campground detail,
geospatial nearby search, and review list/create with automatic rating
recomputation.frontend/ - React (Vite). Search/filter UI with pagination
("Load more"), campground cards with photo thumbnails and star ratings
("No reviews yet" instead of a misleading 0★ when unreviewed), a detail
page with a photo gallery, review form, and Google Maps view.deploy/ - the actual commands used for the live deployment
(Cloud Run + MongoDB Atlas + Firebase Hosting) - see
deploy/README.md.| Piece | Where | URL |
|---|---|---|
| Frontend | Firebase Hosting | https://campcue.web.app |
| Backend API | Cloud Run | https://campground-backend-793519184426.us-central1.run.app/api |
All on free tiers - should run at $0/month for light hobby traffic. See
deploy/README.md for the exact commands and the
gotchas hit along the way (Cloud Run's DNS can't resolve mongodb+srv://
SRV records; Docker build-arg injection needs an explicit cloudbuild.yaml
rather than --set-build-env-vars).
run.ps1Starts MongoDB, the Django backend, and the frontend each in their own
window (assumes one-time setup is already done - see "Running services
individually" below for the first-time pip install/npm install):
powershell -ExecutionPolicy Bypass -File run.ps1
docker compose up --build
Then seed the database once with real campground data (see
data_pipeline/README.md for one-time
credential setup):
cd data_pipeline
pip install -r requirements.txt
python fetch_ridb_data.py --load-mongo
MongoDB - any local instance or mongod --dbpath <dir>.
Backend
cd backend
pip install -r requirements.txt
cp .env.example .env # edit MONGO_URI etc. if not using localhost defaults
python manage.py migrate --run-syncdb
python manage.py runserver 8000
Data pipeline (populate MongoDB with real campground data - see
data_pipeline/README.md for credential setup)
cd data_pipeline
pip install -r requirements.txt
cp .env.example .env
python fetch_ridb_data.py --load-mongo
Frontend (see .env.example for optional configuration)
cd frontend
cp .env.example .env
npm install
npm run dev
Map panels show a placeholder rather than failing if not fully configured - search, filtering, ratings, and reviews all work regardless.
cd backend
pip install -r requirements-dev.txt
python manage.py test campgrounds
The suite runs against mongomock
so it needs no live database. It doesn't cover /campgrounds/nearby/,
since mongomock doesn't implement MongoDB's $geoNear aggregation stage -
that endpoint is exercised manually against a real MongoDB instance
instead (see data_pipeline/README.md for how the sample data is loaded).
| Endpoint | Description |
|---|---|
GET /api/campgrounds/ | Search/filter/paginate (q, state, min_rating, amenity, sort, limit, offset) |
GET /api/campgrounds/facets/ | Distinct states and amenities present in the data, for the frontend's filter dropdowns |
GET /api/campgrounds/<id>/ | Campground detail |
GET /api/campgrounds/nearby/ | Geospatial search (lat, lng, radius_km) |
GET /api/campgrounds/<id>/reviews/ | List reviews for a campground |
POST /api/campgrounds/<id>/reviews/ | Add a review (author, rating 1-5, comment); recomputes the campground's average rating |