# Cofounderella This Flutter application helps entrepreneurs find the right co-founders who complement their skills and also share their interests and business goals. Whether you are looking for a tech expert, a marketing guru, or a visionary partner. This app aims to help you finding a perfect co-founder to bring your startup ideas to life. ## Features - **Matchmaking:** Swipe through potential co-founders inorder to find a match. - **View profiles:** Browse through all your swiped or matched profiles. - **Chat:** In-app messaging to communicate with potential co-founders and discuss your ideas and vision without revealing personal contact details. - **Profile Creation:** Create and update your profile to present yourself attractively to others. - **Dark Mode Support**: Toggle between a light and a dark theme for a personalized app experience. ## Screenshots ![Welcome screen](lib/assets/screenshots/welcome.png) ![Home screen](lib/assets/screenshots/home.png) ![Matching screen: Swipe left](lib/assets/screenshots/swipe_left.png) ![Matching screen: Swipe right](lib/assets/screenshots/swipe_right.png) ![User profile](lib/assets/screenshots/user_info.png) ![Chat](lib/assets/screenshots/chat.png) ![Chat darkmode](lib/assets/screenshots/chat_dark.png) ## Getting Started ### Prerequisites - [Flutter SDK](https://flutter.dev/docs/get-started/install) - [Android Studio](https://developer.android.com/studio) or [Xcode](https://developer.apple.com/xcode/) (for iOS development) - A code editor like [VS Code](https://code.visualstudio.com/) or Android Studio ### Installation 1. **Clone the repository** 2. **Install dependencies:** ```bash flutter pub get ``` 3. **Run the app:** ```bash flutter run ``` ### Folder Structure - **lib/**: Contains the main code for the application. - **assets/**: Icons and other assets. - **components/**: Reusable widgets. - **forms/**: UI forms. - **models/**: Data models. - **pages/**: UI screens. - **services/**: Backend and API services. - **settings/**: Settings provider. - **themes/**: Theme provider. - **utils/**: Utility classes and functions. - **main.dart**: Entry point of the application. ## Technical Information ### Dependencies This project uses the following external packages: - [expandable_text](https://pub.dev/packages/expandable_text): Widget that only shows the first lines of a text and adds a link to expand the full text. - [flutter_svg](https://pub.dev/packages/flutter_svg): An SVG rendering and widget library for Flutter, which allows painting and displaying Scalable Vector Graphics 1.1 files. - [geocoding](https://pub.dev/packages/geocoding): A Flutter Geocoding plugin which provides easy geocoding and reverse-geocoding features. - [geolocator](https://pub.dev/packages/geolocator): Flutter geolocation plugin which provides easy access to platform specific location services. - [image_cropper](https://pub.dev/packages/image_cropper): A Flutter plugin for cropping images. - [image_picker](https://pub.dev/packages/image_picker): Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. - [osm_nominatim](https://pub.dev/packages/osm_nominatim): A library to perform OSM Nominatim searches also supporting reverse searches. - [percent_indicator](https://pub.dev/packages/percent_indicator): Library that allows you to display progress widgets based on percentage, can be Circular or Linear, you can also customize it to your needs. - [shared_preferences](https://pub.dev/packages/shared_preferences): Flutter plugin for reading and writing simple key-value pairs. - [swipable_stack](https://pub.dev/packages/swipable_stack): A widget for stacking cards, which users can swipe horizontally and vertically with beautiful animations like Tinder. - [url_launcher](https://pub.dev/packages/url_launcher): Flutter plugin for launching a URL. - [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications): A cross platform plugin for displaying and scheduling local notifications for Flutter applications with the ability to customise for each platform.. Using [**Firebase**](https://firebase.google.com/) as the backend platform, this project also uses the following plugins: - [cloud_firestore](https://pub.dev/packages/cloud_firestore): Flutter plugin for Cloud Firestore, a cloud-hosted, noSQL database. - [firebase_auth](https://pub.dev/packages/firebase_auth): Flutter plugin for Firebase Auth, enabling authentication. - [firebase_core](https://pub.dev/packages/firebase_core): Flutter plugin for Firebase Core, enabling connecting to multiple Firebase apps. - [firebase_storage](https://pub.dev/packages/firebase_storage): Flutter plugin for Firebase Cloud Storage, a simple object storage service. In addition to the above, this project also uses the following **optional** packages: - [flutter_launcher_icons](https://pub.dev/packages/flutter_launcher_icons): A package which simplifies the task of updating your Flutter app's launcher icon. ### Supported Platforms This project was developed on Windows using Flutter version 3.22.1 and Dart version 3.4.1. It has been tested and is operational on both **Android** and **Web** platforms. Other platforms, such as iOS, have not yet been tested. It might work on iOS without any changes, but this has not been confirmed. ## Using the App Due to the nature of this project, an **online connection is required**. 1. Register or Login 2. Fill out your profile information - Setting your location works best using the Current Position feature. This feature requires temporary access to the device's GPS services. - You can also enter a location manually by searching either by textual location or by coordinates. Here are three examples of what the input text could look like: ```bash Heidelberg Mannheim Glücksteinallee 76133 Karlsruhe ``` The input format to search by coordinates is ```Latitude, Longitude```. Here are two examples of how to input the coordinates: ```bash 49.46997, 8.482 -19.03, -65.25 ``` The search results may not always be very accurate. If no results are found for your search input, please check your input or try a different search term. 3. Swipe through user profiles - In the profile overview, you can swipe other users' profiles to the right (like), left (dislike), or up (skip, to decide later). 4. Connect with your matches through chat. - Once you match with other users, you can chat with them to get to know each other better or exchange personal information. ## Android Binary To quickly get started on Android, you can directly download the current APK file of this app from [here](https://clousi.hs-mannheim.de/index.php/s/KLK42o3zT3abnkb). Since the binary is unsigned, it is highly recommended to verify its integrity by comparing the checksum before installing it on your device. ### Checksums Filename : **cofounderella-v1.0.5-240816.apk** - MD5 : ```39d032a3c38775f41b058d67d4c8ff20``` - SHA-1 : ```d3f3a4fecfee8620aedc4b8177bcd0c320db035e``` - SHA-256 : ```781eff9d1904ef9a0341383ff79b2be0c5e6decbc849859173eff4c5206af365``` - SHA-512 : ```3cc065841fe2951a6ebe8dbe3a46ae617f6bb9576b5a2daa7b2aa0a371721349f2576f5e354cb5a3d357137eb0bb98d6a9a9d20daddb26713969f8d3de8b2bea``` ## Contact If you have any questions or suggestions, feel free to reach out to me at [1024481@stud.hs-mannheim.de](mailto:1024481@stud.hs-mannheim.de). Happy matching!