Skip to content

Cedrickkk/routemate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RouteMate

A social adventure platform for discovering, creating, and sharing outdoor experiences.

What I'm Building

RouteMate is a mobile app where people can discover outdoor destinations, create their own routes, and share their adventures with others. Think of it as a social layer on top of outdoor exploration — you can browse experiences shared by other users, log your own, and find new places worth going to.

It's a monorepo containing a Spring Boot REST API (api/) and a React Native mobile app built with Expo (mobile/).

Why I Built It

This is a personal learning project — deliberately chosen to push me into two technologies I wanted to get more comfortable with: Spring Boot on the backend and React Native with Expo on the mobile side.

Jenventory (my other project) solved a real problem for someone I know, but I built it already knowing roughly how the pieces fit together. RouteMate is intentionally more ambitious — it's where I'm learning to think in mobile-first UX, work with maps and geolocation, and structure a Spring Boot API from a different angle than a store management tool.

⚠️ This project is a work in progress. Core features are partially built and the codebase is actively evolving.

Current Features

  • User Authentication — register, log in, and manage sessions via JWT
  • Route / Destination Discovery — browse outdoor experiences shared by other users

Planned:

  • Create & Share — post your own routes and adventures for others to find
  • Social Feed — see what other adventurers are sharing
  • Maps integration (Google Maps / Mapbox) for visual route display and exploration
  • Location-based discovery — find routes near you

Tech Stack

API (/api)

Layer Technology
Framework Spring Boot
Language Java 21
Database PostgreSQL
ORM Spring Data JPA (Hibernate)
Auth Spring Security + JWT
Build Tool Maven

Mobile (/mobile)

Layer Technology
Framework React Native + Expo
Routing Expo Router
Language TypeScript
Server State TanStack Query
Maps (planned) Google Maps / Mapbox

Project Structure

routemate/
├── api/                        # Spring Boot REST API
│   └── src/main/java/com/routemate/
│       ├── adventure/          # Adventure/route domain (controller, dto, entity, enums, mapper, repository, service)
│       ├── auth/               # JWT authentication and authorization
│       ├── common/             # Shared utilities (annotation, dto/response, entity, exception, mapper, pagination, storage, tag, util, validation)
│       ├── config/             # App configuration (CORS, JPA, Security, Web, Properties)
│       ├── user/               # User management
│       └── RoutemateApiApplication.java
│
└── mobile/                     # React Native + Expo app
    └── src/
        ├── api/                # API client and request functions
        ├── app/                # Expo Router app directory (screens/routes)
        ├── assets/             # Images, fonts, icons
        ├── components/         # Reusable UI components
        ├── constants/          # App-wide constants
        ├── context/            # React context providers
        ├── hooks/              # Custom React hooks
        ├── lib/                # Utilities and helpers
        ├── mock/               # Mock data used during UI development
        ├── queries/            # TanStack Query hooks
        ├── schema/             # Validation schemas
        ├── scripts/            # Build/dev scripts
        ├── styles/             # Shared styles
        └── types/              # TypeScript type definitions

Getting Started

Prerequisites

  • Java 21+
  • PostgreSQL
  • Node.js 18+
  • Expo CLI (npm install -g expo-cli)

API Setup

  1. Navigate to the API directory:

    cd api
  2. Create a PostgreSQL database:

    CREATE DATABASE routemate_db;
  3. Configure application.properties with your credentials:

    spring.datasource.url=jdbc:postgresql://localhost:5432/routemate_db
    spring.datasource.username=your_username
    spring.datasource.password=your_password
    
    app.jwt.secret=your_jwt_secret
    app.jwt.expiration=86400000
  4. Run the API:

    ./mvnw spring-boot:run

Mobile Setup

  1. Navigate to the mobile directory:

    cd mobile
  2. Install dependencies:

    npm install
  3. Set up your environment variables:

    cp .env.example .env
    EXPO_PUBLIC_API_BASE_URL=http://localhost:8080
  4. Start the Expo dev server:

    npx expo start

About

A social adventure platform for discovering, creating, and sharing outdoor experiences.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors