Voidbound is a modern social media mobile app built with Expo, React Native, Convex for backend/database, and Clerk for authentication. Users can post images, follow others, like, comment, bookmark posts, and receive notifications.
- Google authentication via Clerk
- Create, view, and delete image posts
- Like, comment, and bookmark posts
- Follow/unfollow users
- Real-time notifications for likes, comments, and follows
- Profile editing and user stats
- Responsive, modern UI with custom fonts and icons
- Expo Image for fast, cached image loading
.
├── app/ # App entry and route-based screens
│ ├── (auth)/ # Authentication screens
│ ├── (tabs)/ # Main tab screens (feed, bookmarks, create, notifications, profile)
│ └── user/ # User profile screens
├── assets/ # Fonts and images
├── components/ # Reusable UI components
├── constants/ # Theme and mock data
├── convex/ # Convex backend functions and schema
├── providers/ # Context providers (Clerk, Convex)
├── styles/ # StyleSheets for screens/components
├── cache.ts # Secure token cache for Clerk
├── app.json # Expo app config
└── ...
- Node.js (v18+ recommended)
- Expo CLI
- Convex CLI
- Clerk account for authentication
-
Clone the repository:
git clone <your-repo-url> cd Voidbound
-
Install dependencies:
npm install
-
Set up environment variables:
Create a
.env.local
file in the root directory with the following (replace with your actual keys):EXPO_PUBLIC_CONVEX_URL=<your-convex-url> EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=<your-clerk-publishable-key> CLERK_WEBHOOK_SECRET=<your-clerk-webhook-secret>
-
Start the Convex dev server:
npx convex dev
-
Run the app:
npx expo start
Use the Expo Go app or an emulator to preview.
npm start
— Start Expo development servernpm run android
— Run on Android emulator/devicenpm run ios
— Run on iOS simulator/devicenpm run web
— Run in web browsernpm run lint
— Lint the codebase
MIT
Built with ❤️ using Expo, Convex, and Clerk.