BracketCove / Profiler

Apache License 2.0
64 stars 23 forks source link

Profiler

Topics

What is Profiler?

Profiler is an open source App project which intends to demonstrate a functional and adequetely tested "Social Media" Android App. I'll be building multiple iterations of the App, starting with basic features such as User Authentication and Data storage, moving towards features such as live Chat (it wouldn't be much of a Social Media app otherwise). I also take immense effort to use the best tools for the job for APIs and Software Architecture Patterns, insofar as my knowledge/experience with them will allow.

The purpose of this project is to be both a tool to focus my own learning of Android Mobile Developement, and a teaching aid for when I feel comfortable explaining what I'm doing. Although I'm certainly not an Expert Developer, I've been told that my rambling has helped people in the past. I also frequently Livestream work on this project (among others), so that I'm able to both give and get feedback about Android Developement problems.

Login Component

Login Screen

Create Account Component

Create Account Screen

Profile Page Component

Profile Page Screen

Gallery Component Component

Gallery Screen

Can I use code from this Repo?

Absolutely, pursuant to the project's LICENSE. I primarily learned how to build Profiler by learning from free sources and referencing open source libraries, many of which I list (here)[#sources]. That being said, the logo (whenever I get around to making it) and name are my intellectual creations, so don't use them unless you are linking/reffering to this Repo.

Follow the rules in the license, and you're good.

Learning Use Cases

I'm a Beginner

If you're brand new to Android (or Programming in general), this probably isn't the droid you're looking for. While learning about Software Architecture is SUPER IMPORTANT, worrying about RxJava before learning the basics is like worrying about how to cook a Risotto before learning how to turn the stove on. As Gordon Ramsay would say, get the **** out of my kitchen!

Ok joking aside, here's what I would suggest, whether you learn this stuff from my tutorials or not:

  1. Make a Hello World App, and get it deployed to a Device/Emulator.
  2. Make an App which doesn't need to store data, but does need to manipulate input from a user; I'd strongly suggest a Calculator.

For a softer introduction to Android, please see my Beginner Android Dev Series

I'm a Junior/Intermediate Developer

I'm going to be creating content over the next few months explaining the APIs and Concepts that the App uses. I intend to have articles explaining how the following APIs/Concepts fit into the App:

This is an incomplete list which will be added to over time.

I'm an Intermediate/Senior Developer

My goal with this App is to write good code, and use the best tools for the job (as far as I'm currently aware of "the best tools"). Please view my implementations of such tools as the work of a fellow student of Software Development, not an expert. If you see some room for improvement in any of the following areas, please bring it up with me!

APIs and Architectures Used:

I'm also looking at adding the following Libraries for future iterations:

Sources

It's no exaggeration to say that this project wouldn't have been possible for me to make, were it not for the following talks and open source codebases. I have to give my biggest thanks to everyone involved in the Android Architecture Blueprints project. Much of Profiler's code is based off of code from this project, and I would've failed epicly to get it off the ground without such an awesome resource. When I'm more confident in my skills, I would love to help <3<3<3.

If becoming a better developer is your goal, please visit, read, listen, and play around with the following sources:

Contact/Support me:

It's my personal goal to create free high-quality content, accesible by anyone who has an Internet connection, as I don't feel ownership over knowledge which has graciously been given to me for free (I've never taken a paid course for Android Development).

That being said, if the 200+ hours of my time spent coding, researching, making learning aids, and producing content for this project, and the effort I take to explain things in a simple and clear way (which I often fail to do), is worth throwing a bit of money at, then please do!

If you're in a position where monetary support isn't an option, then you can also help out by liking/sharing my stuff on Social Media. This helps me with SEO and building an audience, and I greatly appreciate it! Lastly, drop me a comment on one of my videos.

Changes:

As of writing this commit, here is a non-exhaustive list of changes I plan to implement, when I have time to develope this App further (I'm working on multiple projects and I must use my spare time very deliberately):

Refactor Unit Tests: Now that I'm more comfortable working with RxJava, Mockito, and Dagger in Unit Tests, I'll refactor Profiler's tests to be more useful, and easier/quicker to write. See my Repo PosTrainer for my current approach to Unit Tests.

Change Authentication: I'm going to change Authentication to use Firebase REST Auth. I'd like to incorporate REST using Retrofit and OKHttp into another App.

Get Rid of Photo Gallery and Detail Features: It doesn't make sense to not use a third party solution for this, whether that means a Library or just receiving some Data from another App via OnActivityResult.

G+

Facebook

Twitter

Patreon

Primary Website

License