Skip to content

mdgspace/codephile-mobile

Repository files navigation

Codephile

Codephile is an application specially made for all the competitive coders out there. With features like submission feed, contest reminders, user search, and many more, this app is a perfect companion for stalking your fellow coders and learning from them.

Screenshots

Getting Started

Project structure:-

|- assets { contains icons, images, illustrations }
|- lib
|    |- data
|    |    |- config { contains configuration variables passed at compile-time }
|    |    |- constants { contains app wide constants like asset strings, colors, routes }
|    |    |- services { contains ApiService and StorageService }
|    |- domain
|    |    |- models { contains object models }
|    |    |- repositories { contains repositories according to BLoC architecture pattern }
|    |- presentation { contains UI and BLoC code arranged in folders according to app flow }
|    |    |- components { contains component widgets used throughout the app }
|    |    |- core { contains important classes including the router and the main_app }
|    |- utils { contains utility methods and classes }
|    |-main_development.dart { development entrypoint }
|    |-main_production.dart { production entrypoint }
|- test { contains widget and unit tests arranged in suites }

Setup for development

0. Clone this repo

$ git clone https://github.com/mdgspace/codephile-mobile.git
$ cd codephile-mobile

1. Get dependencies

Fetch pub dependencies required by the app.

$ flutter pub get

2. Generate Freezed models

Some of the code in this app is generate by pub tools.

$ flutter pub run build_runner build --delete-conflicting-outputs

3. Run the app

We've added two .idea and .vscode folders to help you run the app in your IDE of choice. If those aren't working properly, use the following command.

$ flutter build apk --flavor development --target lib/main_development.dart

How to Contribute

We'd love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow.

  • When contributing to this repository, please first discuss the change you wish to make via the issues section before starting any major work.
  • Once you have started work on any issue open a WIP pull request addressing that issue so that we know that someone is working on it.
  • While writing any code for this project ensure that it is well formatted and consistent with the architecture of the rest of the project.
  • Please make sure that you use the standard dart nomenclature.
  • Before committing any change make sure their is no compilation warning or error.

Commit messages

Please start your commits with these prefixes for better understanding among collaborators, based on the type of commit:

  • feat: (addition of a new feature)
  • rfac: (refactoring the code: optimization/ different logic of existing code - output doesn't change, just the way of execution changes)
  • docs: (documenting the code, be it readme, or extra comments)
  • bfix: (bug fixing)
  • chor: (chore - beautifying code, indents, spaces, camelcasing, changing variable names to have an appropriate meaning)
  • ptch: (patches - small changes in code, mainly UI, for example color of a button, incrasing size of tet, etc etc)
  • conf: (configurational settings - changing directory structure, updating gitignore, add libraries, changing manifest etc)
  • test: (adding or editting tests)