A React Native app built with Expo that helps users connect, share skills, and collaborate on projects through themed rooms and real-time collaboration.
- π Authentication: Secure login/register with Appwrite Auth
- π Onboarding Flow:
- Skills selection (multi-select + custom input)
- Tools/resources selection
- Availability toggle
- π€ User Profiles: Store user data in Appwrite database
- οΏ½ Room Management: Create, join, and manage themed collaboration rooms
- π¬ Real-time Chat: Built-in messaging system for room collaboration
- π€ Resource Sharing: Borrow and lend resources within rooms
- π Smart Discovery: Find rooms and collaborators based on skills and interests
- π± Cross-platform: Works on iOS, Android, and Web
- οΏ½π¨ Modern UI: Clean, responsive design with clay morphism styling
- Framework: React Native with Expo
- Navigation: Expo Router (file-based routing)
- Authentication: Appwrite Auth
- Database: Appwrite Database (based on postgresql)
- Real-time: Appwrite Realtime for chat and live updates
- Styling: StyleSheet with Clay Morphism design system
- Animations: Lottie React Native
- State Management: React Context API
- Language: TypeScript
- AI Integration: Google Generative AI for smart matching
git clone <your-repo-url>
cd Resourcely-appifynpm install- Create an account at Appwrite Cloud or set up your own Appwrite instance
- Create a new project
- Create a database and the following collections:
Users Collection with attributes:
name(string, required)email(string, required)avatar(string, optional)skills(string array, optional)tools(string array, optional)isAvailable(boolean, optional, default: false)hasCompletedOnboarding(boolean, optional, default: false)
Rooms Collection with attributes:
name(string, required)description(string, optional)creatorId(string, required)isPublic(boolean, default: true)joinCode(string, optional)skills(string array, optional)tools(string array, optional)members(string array, optional)
Messages Collection with attributes:
roomId(string, required)userId(string, required)content(string, required)timestamp(datetime, required)
Borrows Collection with attributes:
roomId(string, required)requesterId(string, required)item(string, required)description(string, optional)status(string, required, default: "pending")
- In the Appwrite console, go to Auth settings and enable Email/Password authentication
- Set up proper permissions for each collection based on your security requirements
- Copy the example environment file:
cp .env.example .env.local- Fill in your Appwrite configuration in
.env.local:
EXPO_PUBLIC_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
EXPO_PUBLIC_APPWRITE_PROJECT_ID=your-project-id
EXPO_PUBLIC_APPWRITE_PLATFORM=com.resourcely.appify
EXPO_PUBLIC_APPWRITE_DATABASE_ID=your-database-id
EXPO_PUBLIC_APPWRITE_USER_COLLECTION_ID=users
EXPO_PUBLIC_APPWRITE_ROOM_COLLECTION_ID=rooms
EXPO_PUBLIC_APPWRITE_MESSAGE_COLLECTION_ID=messages
EXPO_PUBLIC_APPWRITE_BORROW_COLLECTION_ID=borrows
EXPO_PUBLIC_GOOGLE_AI_API_KEY=your-google-ai-api-key
npm startThen use the Expo Go app to scan the QR code, or run on a simulator:
- iOS:
npm run ios - Android:
npm run android - Web:
npm run web
- Splash Screen: Checks authentication status
- Authentication: Login/Register screens
- Onboarding Flow (for new users):
- Skills selection with AI-powered suggestions
- Tools/resources selection
- Availability setting
- Main App: Feature-rich tabs navigation
- Home: Personal dashboard and quick actions
- Explore: Discover rooms by topic, skill, or interest
- Profile: Manage your profile and settings
- How to Use: Complete user guide and tips
- Profile Creation: Set up your profile with skills, tools, and availability
- Smart Onboarding: AI-powered skill suggestions and guided setup
- Room Discovery: Browse and join rooms that match your interests
- Create Rooms: Start themed rooms with custom descriptions and skill requirements
- Join Communities: Join public rooms instantly or use invite codes for private rooms
- Room Types: Support for both public and private collaboration spaces
- Member Management: View participants, manage permissions, and transfer ownership
- Live Chat: Real-time messaging within rooms for seamless communication
- Resource Sharing: Built-in borrow/lend system for sharing tools and resources
- Activity Tracking: Stay updated on room activities and member interactions
- Broadcast Messages: Send announcements to all room members
- AI-Powered Matching: Find relevant rooms and collaborators based on your profile
- Skill-Based Search: Filter rooms by required skills and tools
- Interest Alignment: Discover communities that match your learning goals and projects
- Cross-Platform: Native performance on iOS, Android, and Web
- Clay Morphism UI: Modern, accessible design with smooth animations
- Offline Support: Core features work even with poor connectivity
- Push Notifications: Stay informed about room activities and messages
- β User registration with email/password
- β User login with email/password
- β Automatic session management
- β User profile creation in database
- β Authentication state management with React Context
- β Protected routes based on auth status
- β Session persistence across app restarts
- β Skills selection with predefined options + custom input
- β AI-powered skill suggestions using Google Generative AI
- β Tools/resources selection with predefined options + custom input
- β Availability toggle for collaboration status
- β Profile summary before completion
- β Data validation and saved to Appwrite database
- β Guided tour with animations and helpful tips
- β Room creation with custom themes and descriptions
- β Public/private room options with join codes
- β Real-time chat messaging with Appwrite Realtime
- β Member management and permissions
- β Resource borrowing/lending system
- β Room search and filtering by skills/tools
- β Broadcast messaging for announcements
- β Room analytics and member activity tracking
- β Clay morphism design system
- β Responsive layouts for mobile and tablet
- β Lottie animations for enhanced UX
- β Dark/light theme support
- β Accessibility features (screen reader support)
- β Haptic feedback for interactions
- β Smooth page transitions and micro-interactions
- Create Your Profile: Sign up and complete the onboarding flow with your skills and tools
- Explore Rooms: Browse public rooms by topic, skill, or interest using the Explore tab
- Join Communities: Join rooms that align with your interests or create your own themed room
- Create Rooms: Start a new room with a name, description, and set of skills/tools
- Real-time Chat: Collaborate and communicate in real-time with all room members
- Borrow & Request: Request resources or offer help directly within the room
- Room Management: View room info, member list, shared skills/tools, and manage settings
- Use specific keywords in search to find rooms relevant to your skills and interests
- Keep your profile updated with current skills and tools for better recommendations
- Be active in room chats to build connections and discover collaboration opportunities
- Create rooms for specific projects or learning goals to attract like-minded collaborators
- Use the borrow feature to share resources and help others in your community
- Be respectful and constructive in all room interactions
- Clearly describe your needs when requesting help or resources
- Follow up on borrowed items and return them promptly
- Share useful resources and knowledge with the community
- Use appropriate room channels for different types of discussions
App won't start
- Ensure all dependencies are installed:
npm install - Check your .env.local file has all required variables
- Clear Metro cache:
npx expo start --clear
Authentication not working
- Verify Appwrite project configuration
- Check that Email/Password auth is enabled in Appwrite console
- Ensure platform is correctly configured in Appwrite
Real-time features not working
- Check internet connectivity
- Verify Appwrite Realtime is enabled
- Check browser/device WebSocket support
Database errors
- Verify collection names match your .env configuration
- Check collection permissions in Appwrite console
- Ensure required attributes are properly configured