← Back to Portfolio

Nomad Accommodations

Full-Stack application made with Remix and TailwindCSS with a SQLite database and Prisma. Deployed using GitHub Actions in Fly.io

Remix TailwindCSS Prisma SQLite GitHub Actions Fly.io
Nomad Accommodations

The Challenge

As a developer who has worked remotely from different countries, I experienced firsthand how time-consuming it is to find accommodation suited for remote work. Most booking platforms are designed for tourists — they highlight pools and views, not workspace quality, WiFi speed, or quiet environments. I wanted to build a platform where digital nomads could share and discover places that actually work for working.

The project also served as a deep dive into Remix’s server-first architecture, particularly its approach to progressive enhancement and form handling.

The Solution

Nomad Accommodations is a community-driven database where nomads submit and browse accommodation recommendations. Each listing focuses on the details that matter for remote work: workspace quality, WiFi reliability, noise levels, and nearby coworking options.

Progressive Enhancement

The application is built with Remix’s philosophy of progressive enhancement at its core. Every feature works without JavaScript enabled — forms submit, pages navigate, and data loads using standard HTML. When JavaScript is available, Remix enhances the experience with client-side transitions, optimistic UI updates, and inline form validation.

This approach makes the application fast and reliable on any connection. If a user is on a slow hotel WiFi (a common scenario for nomads), the site still works perfectly.

Full-Stack Form Handling

The main feature is a multi-field accommodation submission form with validation on both client and server:

  • Client-side: Real-time field validation using Remix’s useActionData and useTransition hooks, providing instant feedback without blocking submission.
  • Server-side: All submissions are validated again on the server using Zod schemas before writing to the database. This ensures data integrity regardless of the client.

Admin Panel

An admin-only section provides CRUD operations for managing submissions — reviewing new entries, editing details, and removing spam. Access is controlled through server-side session authentication.

CI/CD Pipeline

Deployment is automated through GitHub Actions. Every push triggers a pipeline that runs linting, type checking, and tests before deploying to either a staging or production environment on Fly.io. The staging environment allows verification before promoting changes to production.

Nomad Accommodations web app showing accommodation listings with filters and search
Nomad Accommodations web app accommodation detail page with booking information

Technology Stack

  • Remix: Full-stack framework providing server-side rendering, progressive enhancement, and nested routing.
  • TailwindCSS: Responsive and dark mode UI styling.
  • Prisma: Type-safe ORM for database queries and migrations.
  • SQLite: Lightweight embedded database, ideal for a single-server deployment on Fly.io.
  • GitHub Actions: CI/CD pipeline for automated testing and deployment.
  • Fly.io: Edge-deployed application hosting with staging and production environments.

Interested in working together?

Let's discuss your project and bring it to life.