Git clone [email protected]:gavinmcdavitt/StateParkApp.git
cd StateParkApp
npm install
npm start
This application uses React Router v6 with BrowserRouter for SPA-style navigation.
| Route Path | Component | Description |
|---|---|---|
/ or /Home |
Home |
Main landing page |
/About-Us |
AboutUs |
About the project |
/Sign-Up |
AuthPage |
Sign up / Login portal |
/Map |
MapComponent |
Interactive Leaflet-based park map |
/Reservation |
ReservationForm |
Park reservation form |
/My-Reservation |
MyReservationPage |
User's reservation management |
/report |
ParkStatusReportForm |
Submit park status updates |
- Leaflet-based map with OpenStreetMap tiles
- Auto-locate user or fallback to URL lat/lon
- Dynamic radius filter (0β50 miles)
- Park icons by status: open, halfway, or closed
- Spotlight Mode: focus on one park with π icon
- Sidebar list of nearby parks with quick actions
leaflet,geolib,react-router-dom- Firebase Realtime DB (
getObjects)
parks,filteredParks,userLocationisSpotlightMode,spotlightedPark
initializeAllMarkers(),toggleSpotlight()clearAllMarkers(),filterParksWithinRadius()
-
EmailSignIn
- Sign-up/Login via Firebase email+password
- Saves to
/users/{uid}in DB - Error messages for weak or duplicate accounts
-
GoogleSignIn
- Firebase popup OAuth
- Saves
email,uid,roleto DB
-
LogoutButton
- Calls
signOut()and redirects home
- Calls
-
ErrorPopup
- Displays contextual error messages
createUserWithEmailAndPasswordsignInWithEmailAndPasswordsignInWithPopup,signOutsetPersistence,set(ref(db, path))
ensureBooleanField(): sets allisOpento booleanaddCapacityToAllObjects(): random capacity (1β25)addObj(): add park data to Firebase
- React form to submit park data to DB
- Tracks form state with
useState - Required fields: ID, Name, County, Size, Year, Lat/Lng, etc.
- Fetches reservations via:
- Authenticated user email
- URL param (
?email=) - Manual entry
- Displays:
- Park name, reservation name, date/time, guest count, phone
- Conditional UI: depends on auth state
- Redirects and error handles missing/invalid data
- Auto-fills:
parkId,parkNamefrom URLemailfrom user session
- Stores under
/reservations/{YYYY-MM-DD} - Calls
updateCurrentCapacity()on submit - Validates guest count and date
- Redirects to
/my-reservations?email=...
- Fields:
- Park name, open/closed checkbox, datetime, email
- Auto-fills from:
- URL params
- Authenticated user
- Saves to
/reports/{YYYY-MM-DD} - Calls
updateParkStatus(parkName, status) - Redirects to
/mapon success
- Ensure Firebase is configured correctly (API keys, DB rules)
- Most state managed with
useStateanduseEffect - Minimal external CSS (Bootstrap + App.css)
react,react-router-dom,leaflet,geolibfirebase(auth + realtime database)- Bootstrap for layout/styling
βοΈ Last updated: April 2025





