/change-my-mind

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0


Header photo

Change My Mind

A debate app built with React Native / Expo. Using Firebase as backend.

Contact me · Report Bug · Request Feature

Table of Contents

About The Project

Change My Mind was a project I was making with Kotlin but I aborted the project. Then last month I started this project from stratch with React Native this time to learn more and get more experiment in React Native. I wanted to make this project in 1 month as a goal. So everything I've done is a month of labor. ~%90 of my goals are done. After all I have a working project although it has some problems. These problems are not a big deal but I am done with this project now. I will continue to develop this project in places. I used Firebase as backend, I will create my own backend one day if I start development in backend. Because some part of app is not working well because of Firebase's limits. If you like my project and want to cooperate please contact with me ^^

About the app

This is a debate app basically. You can create a debate on any topic to challenge a user to change your mind. You will present your ideas in rounds. At the end of rounds, there is a voting period to able other users vote your opinions. After all most voted user wins the debate. If you already changed your mind and gave up, you can anytime finish the debate and let the opponent wins. I also added point system for win and lose but it is not effective right now because I did not decide that rank system yet.

Built With

Screens

Welcome - Login

Welcome Image

  • Welcome and login screens are works perfectly.

Demo video: Click here

Splash Screen: Click here ( animation is not that fast in app actually video is a little fast :D )

Feed - Explore

Feed-Explore Image

  • Feed screen: needs to be customized according to the user. Sorting is working but category selection is not because of firestore limits.

Demo video: Click here

  • Explore screen: This screen is not working well. I will change almost everything on this screen. Page is so slow because of a lot of queries. "Wiew all" is not working for now, I did not create that screen. Only searching is working well.

Discussion

Discussion Image

  • This page is working well but need tests. I know 1-2 bugs, I will work on them. Share button is not working for now. I need deep linking there.

Demo video: Click here

Creating debate demo: Click here

Join debate - Start new round - Post argument

Argument Image

  • There are a few bugs/errors sometimes but works well generally.

Profile

Profile Image

  • As I know everything is working well these screens. Need tests of course.
  • Message button is not working. Because the app does not have chatting feature yet.

Notifications

Notifications Image

  • Notifications are not working well right now. I will work on them later.

Database Structure

Structure

Getting Started

Prerequisites

This is an example of how to list things you need to use the software and how to install them.

  • expo-cli
npm install expo-cli --global

Installation

  1. You need a firebase configuration file. Contact me to get a test configuration file. Without that config, firebase will not work.
  2. Clone the repo
git clone https://github.com/anilsenay/Change-My-Mind.git
  1. Install NPM packages
npm install
  1. Put your filebase.config.js file to src/consts/

  2. Start the expo metro bundler

npm start

Issues - Future plans

  • Notifications / Explore screens will be revised. Especially Explore screen is working with very bad performance.
  • Sort / Filter problems (Firestore has max. 10 item limit, so I could not make multi-selection category filtering)
  • Profile screen has "Message" button but the app does not have chatting feature. This is a future plan after all.
  • Need showing error/success messages after some events. Especially query hooks need better catch functions.
  • Discussion and Profile dots modals have "Share" button but Deep Linking is not ready for now. This is a future plan.
  • Need tests.
  • Firebase provides more ease but owning backend will be better.
  • useEffect cleanup functions must to be added later.

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the GPL License. See LICENSE for more information.

Contact

@anilsenay

Project Link: https://github.com/anilsenay/change-my-mind