A comprehensive vehicle tracking and maintenance application that helps you keep records of your vehicles and stay on top of maintenance schedules.
- Multi-vehicle tracking - Keep records for as many vehicles as you want
- Smart reminders - Email notifications for date or mileage-based maintenance
- Mileage estimation - Current and yearly mileage projections
- Maintenance history - Complete service record tracking
- Responsive design - Works seamlessly on desktop and mobile devices
This is a monorepo containing two main applications:
- Framework: Next.js 13+ with React 18
- Language: TypeScript
- Styling: Chakra UI with Emotion
- State Management: SWR for server state
- Authentication: Iron Session
- Testing: Jest with React Testing Library
- Framework: Ruby on Rails 8.0 (API mode)
- Language: Ruby 3.4.6
- Database: PostgreSQL
- Server: Puma
- Authentication: Token-based with email magic links
- Node.js 22.19.0+
- Ruby 3.4.6
- PostgreSQL
- Yarn package manager
-
Clone the repository
git clone https://github.com/nicinabox/spanner.git cd spanner -
Setup the API
cd api bundle install rails db:create db:migrate db:seed rails server -p 3001 -
Setup the Web Application
cd web yarn install yarn dev -
Access the applications
- Frontend: http://localhost:3000
- API: http://localhost:3001
cd web
yarn dev # Start development server
yarn build # Build for production
yarn start # Start production server
yarn lint # Run ESLint
yarn lint:fix # Fix ESLint issues
yarn test # Run testscd api
rails server # Start development server
rails console # Open Rails console
rails test # Run tests
rails db:migrate # Run database migrationsCreate a .env.local file in the web directory:
cp .env.example .env.local
# Generate a client secret
openssl rand -base64 32
# Update .env.local
CLIENT_SECRET=your_session_secretcd web
yarn test # Run all tests
yarn test:watch # Run tests in watch modecd api
rails test # Run all tests
rails test test/models # Run specific test suitespanner/
├── api/ # Ruby on Rails API
│ ├── app/
│ ├── config/
│ ├── db/
│ ├── Gemfile
│ └── README.md
├── web/ # Next.js Frontend
│ ├── pages/
│ ├── src/
│ ├── public/
│ ├── package.json
│ └── README.md
└── README.md # This file
For detailed information about each application, see their respective README files:
This project is licensed under the MIT License.
Nic Haynes - [email protected] - https://nicinabox.com