Skip to content

Instantly share code, notes, and snippets.

@Billboz
Created November 25, 2014 15:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Billboz/bce1354df35492c815fc to your computer and use it in GitHub Desktop.
Save Billboz/bce1354df35492c815fc to your computer and use it in GitHub Desktop.
Demo Day App
Learntastic
## The Concept
This app will enable students and instructors to aggregate learning material from many places and in many forms by concept. The concepts will be given at the beginning of the term to the app so that the instructor and the students then can associate code, links, common errors with the fix, pics, charts and the like to the concept. Users will be able to give each entry item a ranking of 1 through 5 representing importance. Once the Tips are made public any ratings given to the Users Tips from others will be converted to points and added to the Users running total.
Visit the homepage
Visitor should be able to sign up
Visitor should get approx. 20 points if the entire login form is filled out and 10 if their twitter is filled. The other items will be worth less.
Visitor should be able to sign in
User should be able to sign out
User should be able to see their dashboard
There should be three types of users: admin, Mentor, Apprentice
Admin should ba able administer the users, including set user type (CRUD)
Mentor should be able to manage the Concepts (CRUD)
Mentor should be able to see their dashboard? Not sure if there will be a dashboard
Apprentice should be able to upload files(Tip) to a concept page
Apprentice should be able to post links(Tip)
Apprentice should be able to choose from a learning point category (error, helpful, ?)
Apprentice Tip information will be put into a form and viewed in a scroll spy
Scroll spy will dynamically add tabs correlated to the form
Apprentice will only be able to see their posts for 24 hours
Apprentice will be able to see all/global posts after 24 hours
Apprentice will be able to rank their Tip by a value rating of 1-5
Apprentice will be able to rank global Tip by a value rating of 1-5
Tips posted will have the author info on the appropriate tab
Concept page should be able to sort by User, rating, category, ?
The site will have a navbar on top that will fade including sign in and gravatar (bento.io)
The site will have a large "jumbotron" type picture and content below (https://www.bento.io/tracks/back-end#python)
Verify bento.io uses Foundation and use it if it does
Apprentice will receive points for each ranking they get from others, points will be displayed in the top navbar
After signin the User should be on the main page with navbar and gravatar in top bar and Concepts (4 x ?) in a grid below
User should be able to input problem, solution, comment, rating into a single page form
User should have required (name f/l, campus, class) - role (Mentor, Apprentice) - blog address, twitter handle, facebook
Campuses should have a name, city, state, postal code, phone number
## Data
User: Required (name f/l, class, role (Mentor, Apprentice, Admin)), blog, twitter handle, facebook, linkedIn etc., points - Campus: Required (name - dropdown, term - dropdown), auto populate (city, state, postal code, phone)
Tip: Required (type (error, misc) solution, comment) link, snippet
Concept: lists of concepts determined by the Mentor and given before term starts
## Data Relationships - Users - Tips - Concepts
Concept has many Tips, Tips belongs to Concept
Tips belongs to User, User has many Tips
## Failure Points/Potential Pitfalls/Gotchas/Callenges/What happened?!?!?!?
The instructor would need to input the concept list up front....(fix... have all concepts available from the begining?)
Getting everyone onboard including instructors
## Pages ... to go over with a designer
* Home page
* Sign in page
* Sign up page
* User dashboard
* CRUD for Tip
* CRUD for Users
* CRUD for Concepts
## Class Diagram
## Controllers and action
* session (index, signin, signup, signout, user dashboard)
* user
* Tip
* comments?
## Gems/Libraries
* kaminari - Next/Previous only and likely not needed
* activeadmin
* Foundation or bootstrap links
* gem 'pry-rails'
* gem 'carrierwave' # For uploading files from the user
* gem 'dotenv-rails'
* gem 'faker', group: :test
* gem 'mini_magick' # For picture resizing
* gem 'fog' # For setting up part of the Amazon S3
* gem 'bcrypt', '~> 3.1.9' # For password security
* gem 'activeadmin', github: 'activeadmin'
* # User the 'thin' server instead of the default webrick
* gem 'thin'
* # Use postgres and the Heroku rails gem for Heroku
* group :production do
* gem 'pg'
* gem 'rails_12factor' # Helps running on Heroku
* # For now, continue to use sqlite3 in development
* # Also use pry for the console
* group :development do
* gem 'sqlite3'
* gem 'annotate'
* gem 'debugger'
* gem 'pry-debugger'
* gem 'better_errors'
* gem 'binding_of_caller'
* gem 'letter_opener' #Allows viewing email in browser for testing ease
* gem 'did_you_mean'
## Services
* Github
* Heroku
## Later
* ?
* ?
* ?
## Sizing
## 1
* Create new Rails app, with .gitignore, pushed to Github: 1.5
* Create all models with migrations: 1.5
* Add active admin with sections for all models: 3
* Push to new Heroku app: 1.5
## 2
* Add bootstrap: 1.5
* Create a seed file: 1.5
* Home page, nave bar, header, footer: 3
* User sign in/session management: 3
## Possibly later
possible use cases....
....A user would find the subject, RoR, then pick the concept, scope/variable/modal/class, then view and/or upload tags/material.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment