Skip to content

A location finder app for finding local wood for where you're camping

License

Notifications You must be signed in to change notification settings

cdavisv/getcampwood

Repository files navigation

Logo

Get Campwood

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


About The Project

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.

(back to top)


Built With

  • Node.js
  • Express
  • MongoDB
  • Mongoose
  • Leaflet.js (map UI)
  • Nginx / Reverse Proxy (optional)
  • Docker (optional)

(back to top)


Getting Started

Follow the instructions below to run the Get Campwood app and all microservices locally.

Prerequisites

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 -v

This 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

Project Structure

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)
  1. Clone the repository git clone https://github.com/cdavisv/getcampwood.git cd getcampwood

  2. Install dependencies for each microservice

Gateway (Main Node.js App)

cd gateway
npm install

Location CRUD Service

cd ../locations-service
npm install

Geolocation Service

cd ../geolocation-service
npm install

Map UI Service

cd ../map-service
npm install

Environment Configuration

Each service requires an .env file. Examples:

gateway/.env

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-secret

locations-service/.env

PORT=4000
MONGO_URI=mongodb://localhost:27017/getcampwood_locations

geolocation-service/.env

PORT=5000
API_KEY=your_geolocation_api_key   # if using external service
map-service/.env
PORT=6000

(back to top)

Running the Services

Run each microservice in its own terminal window.

  1. Start the CRUD Locations Service cd locations-service npm start

Runs at:

http://localhost:4000

  1. Start the Geolocation Service
cd geolocation-service
npm start

Runs at:

http://localhost:5000
  1. Start the Map UI Service
cd map-service
npm start

Runs at:

http://localhost:6000
  1. Start the Gateway App
cd gateway
npm start

Runs at:

http://localhost:3000

Usage

Once 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)

(back to top)

Roadmap

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.

(back to top)

Contributing

Contributions are welcome!

Fork the project

Create your feature branch

git checkout -b feature/my-feature

Commit your changes

git commit -m "Added my feature"

Push to your branch

git push origin feature/my-feature

Open a Pull Request

(back to top)

License

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

(back to top)

Copyright (c) 2025 Charles Davis

About

A location finder app for finding local wood for where you're camping

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors