Tok'd is Untappd for weed. A mobile/web app built with Ionic React and Vite.
- Framework: Ionic React (Ionic 8) + React 19
- Language: TypeScript
- Build: Vite
- Mobile: Capacitor
- Backend: Firebase (Auth / Firestore / Storage)
- Tab-based navigation using
IonTabs+react-router - Pages follow Ionic conventions (
IonPage,IonHeader,IonContent) - Theme variables in
src/theme/variables.cssfor colors - Auth abstraction in
src/context/AuthContext.tsx(wired for Firebase Auth in this repo) - Simple, responsive splash / auth screens and example assets
- Install dependencies
npm install- Create a
.env.localfile at the project root with your Firebase values (optional, required if you want real Firebase auth):
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=123456789
VITE_FIREBASE_APP_ID=1:123:web:abcdef
- Start the dev server
npm run dev- Open
http://localhost:5173in your browser or run via Capacitor for native builds afternpm run build.
npm run dev— start Vite dev servernpm run build— TypeScript check + Vite buildnpm run preview— preview production buildnpm run test.unit— run unit tests (Vitest)npm run test.e2e— run Cypress e2e tests (expects dev server)npm run lint— run ESLint
src/App.tsx— app root, routing and tab navigationsrc/pages/— page components (Tab1, Tab2, Tab3, Splash, Login, Signup)src/components/— reusable UI componentssrc/context/AuthContext.tsx— authentication provider / hooksrc/firebase.ts— Firebase initialization (reads Vite env vars)src/theme/variables.css— Ionic theme variablesvite.config.ts— Vite + Vitest configuration
- This is a demo project; authentication currently expects Firebase configuration but you can run the UI and flows locally without Firebase by stubbing or providing test credentials.
- The codebase follows Ionic conventions for pages and uses strict TypeScript settings.
- Styling uses the Ionic theme variables so colors and dark mode are easy to adjust.
- Initialize app
- Add Firebase for a realtime DB
- Create, style, and edit Splash for logged-out users
- User can sign up
- User can log in
- Replace Tab pages with Account, Activity, and Discover pages
- User can log out