ReadCircle is a full-stack social platform for sharing and discovering book recommendations. Users can sign up, post their favorite books with reviews and images, and browse recommendations from the community.
- 📖 Share Book Recommendations: Post books with title, caption, rating, and cover image.
- 🌟 Rate Books: Give each book a rating from 1 to 5 stars.
- 🖼️ Image Upload: Upload book cover images (stored via Cloudinary).
- 👤 User Profiles: View your recommendations and manage your account.
- 🔒 Authentication: Secure registration and login with JWT.
- 🏠 Feed: Browse recent recommendations from all users.
- 🗑️ Delete: Remove your own recommendations.
- 🎨 Modern UI: Built with React Native, Expo, and Tailwind CSS (NativeWind).
/backend# Node.js/Express API server/mobile# React Native (Expo) mobile app
- Node.js (v18+ recommended)
- npm or yarn
- MongoDB database
- Cloudinary account for image uploads
git clone https://github.com/yourusername/ReadCircle.git
cd ReadCircleCreate a .env file in /backend with:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
API_URL=https://readcircle-app-backend-dqtz.onrender.com/Start the backend server:
npm run devcd ../mobile
npm installStart the Expo app:
npx expo start- Use the Expo Go app or an emulator to preview the app.
- Backend: See
.envexample above. - Mobile: The API URL is set in
mobile/constants/api.ts.
- Frontend: React Native, Expo, NativeWind (Tailwind CSS for RN), Zustand (state)
- Backend: Node.js, Express, MongoDB, Mongoose, Cloudinary, JWT
- Other: Expo Router, AsyncStorage, date-fns
backend/- Express API (seebackend/src/index.js)mobile/- Expo React Native app (seemobile/app/_layout.tsx)
This project is licensed under the MIT License.
Pull requests welcome! For major changes, please open an issue first.
