尚未检测到更新。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 |