A microservice-based firewood finder that helps users locate, post, and manage firewood listings for camping or home use.
Users can manage accounts, search via maps, and perform CRUD operations on firewood locations.
Report Bug
·
Request Feature
Get Campwood is a distributed Node.js application built around microservices:
- Gateway / Main Web App (Node.js + Express + EJS/Handlebars)
- Microservice B: Map UI Service
- Microservice C: Geolocation Service
- Microservice D: Firewood Location CRUD Service
Each service runs independently, communicates over internal API routes, and can be deployed on separate nodes.
- Node.js
- Express
- MongoDB
- Mongoose
- Leaflet.js (map UI)
- Nginx / Reverse Proxy (optional)
- Docker (optional)
Follow the instructions below to run the Get Campwood app and all microservices locally.
Install the following:
- Node.js (version 18 or higher)
- npm
- MongoDB Community Edition or MongoDB Atlas connection string
To verify Node installation:
node -v
npm -vThis is an example of how to list things you need to use the software and how to install them.
- npm
npm install npm@latest -g
getcampwood/
│
├── gateway/ # Main web app (UI + routing)
├── locations-service/ # CRUD microservice (firewood locations)
├── geolocation-service/ # Reverse geocoding and coordinate utilities
├── map-service/ # Map UI microservice (Leaflet front-end provider)
└── shared/ # Shared utils, config (optional)-
Clone the repository git clone https://github.com/cdavisv/getcampwood.git cd getcampwood
-
Install dependencies for each microservice
cd gateway
npm installcd ../locations-service
npm installcd ../geolocation-service
npm installcd ../map-service
npm installEach service requires an .env file. Examples:
PORT=3000
LOCATIONS_SERVICE_URL=http://localhost:4000
GEO_SERVICE_URL=http://localhost:5000
MAP_SERVICE_URL=http://localhost:6000
MONGO_URI=mongodb://localhost:27017/getcampwood
SESSION_SECRET=your-session-secretPORT=4000
MONGO_URI=mongodb://localhost:27017/getcampwood_locationsPORT=5000
API_KEY=your_geolocation_api_key # if using external servicemap-service/.env
PORT=6000- Start the CRUD Locations Service cd locations-service npm start
- Start the Geolocation Service
cd geolocation-service
npm starthttp://localhost:5000- Start the Map UI Service
cd map-service
npm starthttp://localhost:6000- Start the Gateway App
cd gateway
npm starthttp://localhost:3000Once all services are running:
Visit http://localhost:3000
Create an account
Add a firewood listing
View listings on the integrated map
Use geolocation tools to fetch coordinates
Edit or delete your posts (CRUD)
User messaging system
Image uploads for listings
Mobile app client
Admin dashboard
AI-based location quality scoring
Offline caching (PWA)
See the open issues
for more.
Contributions are welcome!
Fork the projectCreate your feature branch
git checkout -b feature/my-featureCommit your changes
git commit -m "Added my feature"Push to your branch
git push origin feature/my-featureOpen a Pull Request
Distributed under the a custom proprietary "Look but Do Not Touch" License. See LICENSE for details.
Contact
Charles Davis Project Link: https://github.com/cdavisv/getcampwood
Copyright (c) 2025 Charles Davis