A peer-to-peer Android application for skill exchange built with Kotlin and Firebase.
SkillSwap Lite connects people who want to share their skills and learn from others. Users can post skills they can teach (e.g., "I teach Python programming") and browse skills offered by others to find learning opportunities.
- ** Authentication**: Google Sign-in using Firebase Auth
- ** Post Skills**: Create skill posts with title, description, and tags
- ** Browse Skills**: View all skills in a scrollable list with search capabilities
- ** User Profile**: Manage your posted skills and view your profile
- ** Contact System**: Connect with skill providers
- Material Design 3 UI components
- Real-time updates using Firestore
- Offline support
- Image loading with Glide
- Responsive design for various screen sizes
- Language: Kotlin
- Platform: Android (API 24+)
- Architecture: MVVM
- Backend: Firebase
- Authentication (Google Sign-in)
- Cloud Firestore (NoSQL database)
- Storage (profile images)
- Cloud Messaging (notifications - future feature)
- UI: Material Design Components
- Image Loading: Glide
- Build System: Gradle
SkillSwap Lite/
βββ app/
β βββ src/main/java/com/skillswap/lite/
β β βββ activities/ # Activity classes
β β β βββ MainActivity.kt
β β β βββ AuthActivity.kt
β β β βββ PostSkillActivity.kt
β β β βββ ProfileActivity.kt
β β βββ adapters/ # RecyclerView adapters
β β β βββ SkillsAdapter.kt
β β βββ models/ # Data models
β β β βββ Skill.kt
β β β βββ User.kt
β β βββ utils/ # Utility classes
β β βββ FirebaseUtils.kt
β βββ src/main/res/
β β βββ layout/ # XML layouts
β β βββ values/ # Colors, strings, themes
β β βββ drawable/ # Icons and images
β β βββ menu/ # Menu resources
β βββ build.gradle # App-level dependencies
βββ build.gradle # Project-level configuration
βββ README.md
- Android Studio Arctic Fox or later
- Android SDK (API 24+)
- Google account for Firebase setup
- Git
-
Clone the repository
git clone https://github.com/yourusername/skillswap-lite.git cd skillswap-lite -
Firebase Setup
- Go to Firebase Console
- Create a new project
- Add an Android app with package name:
com.skillswap.lite - Download
google-services.jsonand place it inapp/directory - Enable Authentication with Google Sign-in
- Create a Firestore database
- Set up Firebase Storage
-
Configure Google Sign-in
- In Firebase Console, go to Authentication > Sign-in method
- Enable Google Sign-in
- Add your SHA-1 certificate fingerprint
- Update
default_web_client_idinstrings.xml
-
Open in Android Studio
- Open the project in Android Studio
- Sync project with Gradle files
- Run the app on an emulator or device
Add these rules to your Firestore database:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Users can read/write their own user document
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
// Skills can be read by anyone, but only created/updated by the owner
match /skills/{skillId} {
allow read: if request.auth != null;
allow create: if request.auth != null && request.auth.uid == resource.data.userId;
allow update, delete: if request.auth != null && request.auth.uid == resource.data.userId;
}
}
}- Authentication: Google Sign-in screen
- Skills Feed: Browse all available skills
- Post Skill: Create a new skill post
- Profile: View and manage your skills
- Skill: Represents a skill post with title, description, tags
- User: User profile information
- AuthActivity: Handles Google Sign-in
- MainActivity: Main feed showing all skills
- PostSkillActivity: Form to create new skill posts
- ProfileActivity: User profile and skill management
- Real-time data synchronization
- Secure authentication
- Cloud storage for profile images
- Offline support
// Firebase
implementation platform('com.google.firebase:firebase-bom:32.7.0')
implementation 'com.google.firebase:firebase-auth-ktx'
implementation 'com.google.firebase:firebase-firestore-ktx'
implementation 'com.google.firebase:firebase-storage-ktx'
// Material Design
implementation 'com.google.android.material:material:1.10.0'
// Image Loading
implementation 'com.github.bumptech.glide:glide:4.16.0'- In-app Chat: Real-time messaging between users
- Skill Categories: Organize skills by categories
- Search & Filter: Advanced search with tags and location
- Rating System: Rate and review skill exchanges
- Push Notifications: Notify users of new matches
- Geolocation: Find skills in your area
- Profile Pictures: Upload custom profile images
- Skill Requests: Post what you want to learn
- Minimum SDK: API 24 (Android 7.0)
- Target SDK: API 34 (Android 14)
- Language: 100% Kotlin
- Architecture: MVVM with Repository pattern
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Material Design for UI components
- Firebase for backend services
- Glide for image loading
- The Android developer community
Sonal - [email protected]
Project Link: https://github.com/yourusername/skillswap-lite