https://stark-ocean-76448.herokuapp.com/
The CrowdCare Application was created in order to foster volunteer efforts in close-knit social circles. We designed the app as a "volunteer virtual pot luck", wherein the creator of a Vounteer Project can create tasks that are needed for the specific project. These tasks are placed in three states, once created, assigned, completed and signed-off. These "states" create a checks and balances system between the volunteer and the project owner, in regards to task completion.
We approached creating this app with the MVP in mind. We utilized a MOSCOW strategy for develpment.
Mo - Must Have: What does this app absolutely HAVE TO HAVE in order to function properly?
This is also known as the MVP.
S - Should Have: This functionality is what the app should have, based on what a user
expects to see in a pet adoption app. This is based on the products that have already
paved the way in the market space. Users have seen certain features on similar apps,
so this is their "norm".
Co - Could Have: These are the "bells and whistles" features that could be added to increase
the WOW factor of our app. These will only be implemented after the Must Haves and Should Haves
are fleshed out, and solidly working.
W - Won't Have: Generally, these are the ideas akin to "Let's create an app that's a mash up
of Facebook and.. all of Google... and let's do it in a couple of days!" In other words,
these are features that are placed in the Ice Box.
-
Ruby - Ruby is a dynamic, reflective, object-oriented, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan.
-
Ruby on Rails - Ruby on Rails, or simply Rails, is a web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and web pages. It encourages and facilitates the use of web standards such as JSON or XML for data transfer, and HTML, CSS and JavaScript for display and user interfacing. In addition to MVC, Rails emphasizes the use of other well-known software engineering patterns and paradigms, including convention over configuration (CoC), don't repeat yourself (DRY), and the active record pattern.
-
RubyGems - RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries (in a self-contained format called a "gem"), a tool designed to easily manage the installation of gems, and a server for distributing them. RubyGems was created around November 2003 and is now part of the standard library from Ruby version 1.9.
-
PostgreSQL - PostgreSQL, often simply Postgres or alternatively pgSQL, is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance.
-
Active Record - The Ruby library ActiveRecord implements ORM. It creates a persistable domain model from business objects and database tables, where logic and data are presented as a unified package.
-
JavaScript - JavaScript is the programming language of HTML and the Web.
-
jQuery - jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript.
-
$.ajax - AJAX stands for Asynchronous JavaScript and XML. In a nutshell, it is the use of the XMLHttpRequest object to communicate with server-side scripts. It can send as well as receive information in a variety of formats, including JSON, XML, HTML, and even text files.
-
ERB - ERB is a client-side templating system that embeds Ruby into an HTML document.
-
HTML - HTML is a markup language for describing web documents (web pages). HTML stands for Hyper Text Markup Language. A markup language is a set of markup tags. HTML documents are described by HTML tags. Each HTML tag describes different document content.
-
CSS - Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language.
-
SASS - Syntatically Awesome Style Sheets (SASS) is a CSS precompiler.
-
Devise - Devise is a flexible authentication solution for Rails.
-
Heroku - Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps — we're the fastest way to go from idea to URL, bypassing all those infrastructure headaches.
-
Git and GitHub - As Git is a distributed version control system, it can be used as a server out of the box. Dedicated Git server software helps, amongst other features, to add access control, display the contents of a Git repository via the web, and help managing multiple repositories.
-
Lucidchart - Lucidchart is the online diagramming application that we utilized when creating our User Flows and our Wire Frames.
-
Ruby - ver 2.3.1
-
Ruby on Rails - ver 4.2.6
-
PostgreSQL - ver 9.5.3
-
Devise - 3.2.0
This program utilizes our internal APIs.
Initially, we encountered a bit of a challenge, when attempting to implement our state machine via a readily available RubyGem. Once implemented, we found that the gem was depricated and would not work with our current version of Rails. We solved this challenge by rolling our own state machine, to transition the state of our current tasks inside of Projects.
One of our major challenges in our project was not with Rails, rather with our CSS styling. After developing our own styles and grid system, we found ourselves, converting over to Bootstrap, due to time and lack of our own documentation. We found this to be both necessary and challenging, as we needed to find a system, where we could rely on convention, but at the same time, not begin from ground zero with styling. We found that we lost some styling control, which was troublesome, yet gained a standard method of styling, so that we could all work on implementation, as a team.
In the future, we'd like to allow users to upload images to their projects, as well as to share projects within their social circles on social media. We'd also like to have our front page pull in the most recent projects and show them in thumbnails on the bottom of the Welcome Screen.
We'd also like to implement a chat feature, so that project creators can chat with volunteers about their projects and tasks.