Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates #110

Open
wants to merge 17 commits into
base: rocket
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
BSD 3-Clause License with Additional Terms

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of Damian Stone nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

ADDITIONAL TERMS:

4. The name, designs, and colors of "Toogether" are registered trademarks and cannot be used without explicit permission.
5. The Software can only be used for learning purposes in a local environment. Deployment of the code in any form is prohibited.
6. The Software may be used as a reference for creating similar applications, but any direct use or deployment of the original code is not allowed.
7. The Software cannot be used for commercial purposes without explicit permission.
8. The Software cannot be modified without explicit permission.
9. The Software cannot be distributed without explicit permission.
10. The Software cannot be sublicensed to any third parties.
11. Appropriate credit must be given to the original author when using the Software.
12. The Software cannot be used in a way that directly competes with "Toogether" or any related services.
13. Any proprietary or sensitive information contained in the Software must remain confidential and cannot be disclosed.

Author and Owner:
Damian Stone
GitHub: @damianstone
Email: [email protected]

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
146 changes: 77 additions & 69 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,70 @@
<img src="https://user-images.githubusercontent.com/63305840/150650911-a3aba1cc-c2dd-4ced-9d60-0bd5ea1cfc8e.png" width="300" />
</p>

# Toogether App

Mobile app build with React Native Expo, Redux and Axios

## Initialization
## What's Toogether app?
An app where users can create a group with their friends, match with other groups and hang out
<br>
<br>
**This is just the frontend of the app, if you're looking for the backend: https://github.com/damianstone/toogether-backend**

## Technologies
- ⚛️ React Native bare workflow https://docs.expo.dev/bare/overview/
- 🔥 Redux & Redux thunk
- 📍 Geolocation
- 🧭 React Navigation V7
- 🧹 ESlint + Prettier
- ⚡ Fast Image https://github.com/DylanVann/react-native-fast-image
- 👉 Picker Native Select https://github.com/lawnstarter/react-native-picker-select
- ↪️ React Native Deck Swiper https://github.com/alexbrillant/react-native-deck-swiper
- 🎈+ Many other expo integrations!

<img src="https://github.com/damianstone/toogether-mobile/assets/63305840/4085a6f7-9ffc-469d-88ef-11c54e82149a" width="3000" />

# Features
### 👀 Basic
- Login and registration with auth token
- Create profile
- Report profiles
- Block / unblock profiles
- Password recovery with email verification

### 👤 Your profile
- Update your personal information
- Add photos

### 💃 Swipe single and group profiles
- Support single and group profiles
- Like
- Unlike
- Undo

### 🕺🏼 Create a group profile with your friends
- Create a groups
- Invite friends using unique link
- If admin (creator of the group): remove and add members
- If not admin, join to group using the link and leave

### 💬 Group chat
- Group chat generated automatically when joining or creating a group
- For now the chat just support text messages

### 💬 Matches and chats
- Chat with your matches
- Delete matches
- Report and block profiles

### 🔗 Matchmaking algorithm
List based on
- Your location
- Age
- Gender
- Preferences
- Group sizes
- More of the algorithm in the backend!

mailto: [email protected]

# Initialization

### Install the requirements
The following command allows you to install all the requirements using the exact same versions specified in the `package.json`
Expand Down Expand Up @@ -47,7 +106,10 @@ For Android
npm run android
```

### Style standards
# Deployment
For both you can use the github action pipeline! 🚀

# Style standards

To keep the code in a standard style we use `Prettier + Eslint`

Expand All @@ -64,7 +126,7 @@ To check errors in the code style, run the following command:
npm run lint:fix
```

## Pull Requests
# Pull Requests

Before any merge to develop or rocket, it will be necessary to make a Pull Request and a code review.

Expand All @@ -78,43 +140,8 @@ Basic PR structure:
3. Create the pull request (PR) manually by selecting the correct `feature-branch` you are working on and clicking on the "New pull request" button
4. Notify the team about your PR through our communication channel: Discord

# Deployment

### Deploy to expo
```bash
expo publish --release-channel develop
expo publish --release-channel rocket
```

### Deploy to the App Store and Test Flight
Deployments can only be done once the new features or fixes are well tested.

Before make sure you have installed globally `EAS-CLI `
For this, you can run

```bash
npm install -g eas-cli
```

To build the app we can use the following command specifying the channel (env variables) we want to use

```bash
eas build -p ios --profile rocket
```

Finally we can make the deployment to the App Store using the build url generated in expo
Here you can find the url: https://expo.dev/

```bash
eas submit --platform ios --url url-of-the-buil-in-expo
```

### Deploy to Google Play Store
Information and steps need to be added

# General project structure

### Conventions
# Conventions
The conventions or general rules for the structure of this project are the following:
- Folders or files that do not export objects or components, in lower case
- Folders or files that export objects or components in capital letters
Expand All @@ -123,30 +150,11 @@ The conventions or general rules for the structure of this project are the follo
- `State` and `props` must be destructured before used
- More conventions and patters can be found looking the code

### Folders
The project is organized into several folders, each serving a specific purpose. This section provides an overview of each folder and its contents.

#### assets
The assets folder stores all the non-code resources used in the project, such as fonts, icons, and images.

#### components
The components folder contains all the React Native components used in the project. The UI subfolder contains smaller components that make up the user interface, such as text elements, avatars, inputs, etc.

#### constants
The constants folder contains all the constant values used in the app, including color codes, constant names for reducers and actions, and values from the backend responses.

#### data
The data folder stores JavaScript and JSON objects that are used to make certain components or screens dynamic.

##### navigation
The navigation folder contains the navigation structure for the transitions between screens using React Navigation 4x.

##### screens
The screens folder stores all the components (screens) of each section of the app. These components contain most of the logic for each screen and should make use of other components as much as possible for code readability. The calls to the backend must also be made within the screens.

#### store
This folder contains the implementation of the state management using Redux.

#### utils
The utils folder contains utility functions used throughout the project. These functions perform common tasks and are designed to be reused.
# Summary of limitations
- The Toogether name and brand are registered; you cannot use the name, designs, or colors.
- You can use the app for any learning purpose as long as it runs in your local environment. In other words, you cannot deploy our code.
- You can use the code for learning purposes and references. For example, if you are creating a similar app, you can use our code to learn how to build features like a swipe function and get inspiration from our implementation.
- You cannot sell this code in any form.
- You cannot conduct business with this code in any form

More information can be found in the LICENSE file in the root of the project. If you know of someone who is not respecting these limitations, please contact the owner at [email protected]. The open-source world thrives on our respectful behavior ❤️
2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ android {
applicationId "toogether.app"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 128
versionCode 129
versionName "1.0.0"
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()

Expand Down
151 changes: 0 additions & 151 deletions data/chats.json

This file was deleted.

Loading
Loading