Skip to content

tristanlangford/acebook-brainaics

 
 

Repository files navigation

AceBook

Challenge progress overview:

  • Currently, all elements of CRUD are implemented, including an editing feature that is permitted for ten minutes only.
  • The users are able to make a time-stamped and username-stamped post, which is presented in reverse chronological order.
  • They can sign-up, sign-in, and log out.

Team

Notes from Sprint 1

Team Users

Coding Achievements

  • Sign-in, Sign-up and Sign-out done. These features were done using the clearance gem, which created many of the routes and useful functions but needed to be fine-tuned to fit our specific test case, eg. password length.
  • Rerouting browser to sign-in if they aren't signed in and make a request to the posts route.

Challenges in Feature Implementation

Using a gem is useful but does hide some important functionality which was a pain to find at times

Small things to think about in Future Sprints

  • A few test are currently in the pending state, as they were generated by clearance and require the email functionality of the email given by users which we didn't look into as it wasn't part of the user authentication ticket.
  • There could be an alert or useful message when redirecting unsigned in users to the sign-in page.

Team Posts

Coding Achievements

  • Posts have Time and Date created visible, as well as information about which user created them (currently user_id and not the user's username)
  • Posts are displayed in reverse chronological order based on time created.
  • Post can accept multiple lines and display multiple lines.

Challenges in Feature Implementation

  • Database migrations, when creating new columns and foreign keys. There were a few times where Travis checks and local checks didn't work due to small mistakes in creating the database migrations, but I feel we have a better understanding of this now
  • Timezone errors when using the datatype timestamp in the posts database, highlighted by the UK currently in BST and Travis defaulting to UTC:0. Going back to timestamp datatype has made the test passing, but we are a little unsure about how the database and therefore the display will work if people from different timezones used the app.
  • We haven't yet found a good way to test the multiple line feature, the feature is clearly visible in a manual test, but we aren't sure of a way to get the tests to enter a return character.

Small things to think about in Future Sprints

  • The display in the posts view current uses the user_id and not the user's username.
  • Functionality across timezones (possibly it is already fine?)
  • Getting a test for multiple line posts

Group Work

Coding Achievements

  • Getting Heroku to host the app
  • Getting Travis to act as our CI
  • Beginning to build a project rubocop style guide
  • Adding Coverage checking to the project

Small things to think about in Future Sprints

  • Currently there is an unexpected terminal output when test are run
  • Adding a test for minimun code coverage
  • Looking into code climate
  • Further edits to the rubocop file - currently 7 offences in master

Notes from Sprint 2

Team CSS

Coding Achievements

  • Bootstrap gem implemented to begin base styling for app, including reworking container size and formatting.
  • Use of placeholder values for sign-up/ sign-in pages.
  • Sign-up/ sign-in containers are centre-aligned vertically

Challenges in Feature Implementation

  • Bootstrap took longer to suss out than expected, and as a product, some pages remain without styling.
  • Centre-aligning containers with Bootstrap's containers proved challenging. This resulted in a bit of DIY CSS, rather than using Bootstrap.

Small things to think about in Future Sprints

  • Implementing CSS for the entire app without breaking things.

Team Posts

Coding Achievements

  • Posts are printed alongside the username, rather than user_id.
  • Update and Delete features completed. These are user-specified, and a helpful message appears when a user attempts to amend a post they did not submit.
  • Additionally, the Update feature is only available for 10 minutes after posting. Once the time has elapsed, a helpful message appears when they attempt to edit their post.

Challenges in Feature Implementation

  • Covering all bases for test cases was a challenge. It took a while to realise how to implement checks in Rails. We eventually used a before_action filter to implement the Update (within 10 minutes) and Delete features.
  • In order to print the username in place of the user_id, "has_many" & "belongs_to" were used in User and Post classes respectively, but again, these took a while to figure out.

Small things to think about in Future Sprints

This currently remains the same as the previous sprint

  • Getting a test for multiple line posts

Group Work

Coding Achievements

  • Implementation of TimeCop gem to test for post editing window.
  • Implementation of a test for minimun code coverage
  • Further edits to the Rubocop file in order to customise formatting
  • Coverage file successfully added to .gitignore file to econimise timespent

Small things to think about in Future Sprints

These currently remains the same as the previous sprint

  • Currently there is an unexpected terminal output when test are run
  • Looking into code climate

Notes from Sprint 3

Team Wall

Coding Achievements

  • A logged in User is directed to their own Wall. Or is presented with the login screen, therefor this is the default route.
  • User can see other users wall when logged in- this was achieved via the implementation of a "scarer list". The list is a series of links which when clicked navigate to the wall of the associated user. This uses the user_id as param.
  • User can post on a user's wall and it only appears on that wall. This functionality was delivered concurrently with the above. The posts are stored in the posts database with a wall_id, so are linked with the wall at which they were created.

Challenges in Feature Implementation

  • These features were implemented smoothly and there were no specific challenges noted in their implementation.

Small things to think about in Future Sprints

  • CSS

Team Chat-room

Coding Achievements

  • In response to the 12pm changing requirements this team's sprint was around the implementation of chatroom functionality.
  • Action cable was suggested for this so Team chat-room installed the action cable gem and followed the documentation to spike the feature.
  • User can join a chatroom with other signed in users. Was achieved using inbuilt clearance functionality only allowing current_users, i.e signed in users, to access the chatroom route. If not logged in they are returned to the sign in route.
  • See realtime messages, was achieved using action cable utilising JQuery and the JQuery-rails gem. This allows the messages to appear onscreen without the need to refresh the page.
  • A User can share their own message. This is handled by the action cable gem and it's subscription to a stream allowing users to input a message in the chatroom and have it instantly return as long as the connection is established and persists.

Challenges in Feature Implementation

  • Installing and utilising the features of this new gem required methodically working through the documentation to ensure it behaved how we wanted it to for our application.
  • Testing was and is a problem currently. The ability to test the behaviour of action cable has alluded us far, not for want of trying. This will continue to be addressed, but for the purpose of deploying the feature this was excluded from coverage for now.

Small things to think about in Future Sprints

  • Testing of action cable behaviour is ongoing and will require addressing.

Group Work

Coding Achievements

  • Tristan did some additional work on the CSS styling at the weekend, tidying up style, changed button on edit form to a back button.
  • Added logo and footer
  • We mobbed on Monday morning pre announcement to clear all outstanding rspec fails and reduce rubocop problems.
  • Reduced the number of redundant rspec tests.

Small things to think about in Future Sprints

  • Currently there is an unexpected terminal output when test are run
  • Adding a test for minimum code coverage -- DONE
  • Looking into code climate -- Following discussion with Tatsiana it was agreed our coverage was sufficient without code climate.
  • Further edits to the rubocop file - currently 5 offences in master

Notes from Sprint 4

Team React

Coding Achievements

  • Following another change in requirements; "Separate Rails entirely from the front end. Build a front end app to consume the Rails API", this team proceeded to understand how to breakdown our application into an API
  • GET API connection live using REACT.js, where data can be passed from the API backend to the frontend and rendered on a page

Challenges in Feature Implementation

  • Handling the format of the JSON data React.js can work with
  • Understanding data requirements for Gems and how validation blocked the transfer of data

Team Finalise Deployment

Coding Achievements

  • Added username to chat room input and output by manipulating the Action Cable Gem Javascript code and the relationship between users and messages in the database
  • Completed the chat room with CSS and link

Challenges in Feature Implementation

  • Capybara form submitting with JQuery didn’t work
  • Manipulating ActionCable Gem to accept the username when adding to database
  • Getting a broadcast to work on Heroku

Group Work

Coding Achievements

  • Minimised our Rubocop offences
  • Prepared app presentation
  • Group Code Review

Future Features

  • POST API connection
  • Getting broadcast live on Heroku for chat room
  • Reset password functionality
  • User can customise their wall
  • Custom 404 error page when a user tries to visit a non-existing wall
  • Enable username to be used as a parameter instead/as well as user_id

REQUIRED INSTRUCTIONS:

  1. Fork this repository to acebook-teamname and customize the below**

You can find the engineering project outline here.

  1. The card wall is here:

How to contribute to this project

See CONTRIBUTING.md

Quickstart

First, clone this repository. Then:

> bundle install
> bin/rails db:create
> bin/rails db:migrate

> bundle exec rspec # Run the tests to ensure it works
> bin/rails server # Start the server at localhost:3000

About

Template for the AceBook project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 81.0%
  • Ruby 12.8%
  • HTML 3.5%
  • CSS 2.7%