Cims is a mobile mountaineering app with analytics powered by reactanalytics.app.
Cims is a mobile app to track your mountain summits and join hiking challenges. Users can:
- Log mountain summits and view their progress
- Join curated regional hiking challenges (Catalonia, GR-20, Alps…)
- Organize group hikes via Plans and coordinate through Chat
- Earn points based on mountain difficulty
- Climb the rankings and celebrate your achievements
This is a Yarn workspaces monorepo containing:
100cims/
├── packages/
│ ├── app/ # React Native mobile app (Expo)
│ └── api/ # Backend API (Next.js + Elysia)
├── package.json # Root workspace configuration
└── README.md # This file
packages/app- Mobile application built with Expo and React Nativepackages/api- Backend API built with Next.js and Elysia
- Node.js >= 18.0.0
- Yarn 1.22.22
- PostgreSQL (for API)
- Expo Go app (for mobile development)
- Clone and install dependencies:
git clone https://github.com/expofast/100cims.git
cd 100cims
yarn install-
Set up environment variables:
- Copy
packages/app/.env.exampletopackages/app/.env.local - Copy
packages/api/.env.exampletopackages/api/.env.local - Fill in the required values (see package READMEs for details)
- Copy
-
Start development:
# Terminal 1: Start the API server
yarn dev:api
# Terminal 2: Start the mobile app
yarn dev:app# Run commands in specific packages
yarn app <command> # Run command in mobile app
yarn api <command> # Run command in API
# Development servers
yarn dev:app # Start Expo dev server
yarn dev:api # Start Next.js dev server
# Build commands
yarn build:app # Build mobile app for production
yarn build:api # Build API for production
# Linting and type-checking
yarn lint # Run ESLint on all packages
yarn type-check # Run TypeScript checksSee individual package READMEs for detailed commands:
- Yarn Workspaces - Dependency management
- TypeScript 5 - Type safety across all packages
- ESLint + Prettier - Code quality and formatting
- Git - Version control
- Expo SDK 54 - React Native development platform
- React Native 0.81 - Mobile framework (new architecture enabled)
- expo-router 6 - File-based navigation
- NativeWind 4 - Tailwind CSS for React Native
- React Query 5 - Server state management
- OpenAPI TypeScript - Type-safe API client
- React Intl - Internationalization (en, ca, es)
- React Native Maps - Mountain location mapping
- Expo Auth - Google & Apple OAuth
- Analytics - reactanalytics.app
- Next.js 15 - React framework (App Router)
- Elysia 1.4 - Fast TypeScript API framework
- Drizzle ORM - Type-safe SQL toolkit
- PostgreSQL - Relational database
- AWS S3 - Image storage (avatars, summit photos)
- Google Sheets API - Error/suggestion logging
- JWT - Authentication & authorization
- Swagger - API documentation
The app supports both Google and Apple sign-in via OAuth 2.0.
- Backend validates tokens and issues JWTs
- Protected API routes require valid JWT bearer tokens
- See API Authentication docs for details
Cims supports three languages:
- 🇬🇧 English (en)
- 🇪🇸 Catalan (ca)
- 🇪🇸 Spanish (es)
Translations are managed with FormatJS. See app README for update workflow.
- Mobile App: Deployed via EAS Build (Expo Application Services)
- Backend API: Deployed on Vercel (see
vercel.json)
This project uses reactanalytics.app for privacy-focused mobile analytics.
Made with ❤️ by @jvidalv



