COM2025 Web Applications Development
Project
Handout Date: Deadline:
Written Feedback: Module Weight:
Thursday 20th October 2018
Tuesday 11th December 2018 by 4:00pm via SurreyLearn Monday 7th January 2019
Assignment worth 40% of the module
Academic Misconduct: Coursework will be routinely checked for academic misconduct. Your submission must be your own work. Please read the Student Handbook to ensure that you know what this means. Do not give your code to anyone else, either before or after the coursework deadline.
- Purpose ………………………………………………………………………………………….. 1
- Problem Definition …………………………………………………………………………..1
- Requirements (marks)……………………………………………………………………….2
- Optional Extras (no marks)………………………………………………………………..3
- What to submit?……………………………………………………………………………….3
1. Purpose
The purpose of this assignment is for you to demonstrate your ability to:
- Develop an interactive web app.
- Use Ruby on Rails.
This will involve you building a web app using Rails, which will include Ruby classes and a database that will produce HTML, CSS and jQuery that will be used as the user interface to your app via standard web browsers.
2. ProblemDefinition
Your first task is to select an application that you wish to develop. We are not constraining your choice so that you have an interest in what you are developing, and scope to make it your own.
To help with your selection we are expecting your application at a minimum to include
the following elements:
- A home page.
- A contact page which provides a form for you to contact the site owners via email.
- Resource pages linked to at least three models which are contained in a database. You must show resource associations in your models.
Some example sites you might consider:
- Car park space bookings: a system to allow you to book a parking space in advance. The site could report the available spaces, location of cars and costs. We are not expecting any payment mechanism.
- Events management: a system to allow you to manage a series of events. Each event will have a number of tasks associated with it all linked to a calendar and deadlines.
October 2018 1
- Module option selections: a system which will allow students to select modules that they wish to take form a list of optional modules. The system must ensure that students can only take modules which add up to the required number of credits.
- A football league system: a system used to track football teams in a league, record points and display the current league table and fixtures. Feel free to pick any sport if you do not like football.
- Music collection: a system to keep track of your music collection, including album and track information, plus your own notes or favourites.
Feel free to pick your own idea, but make sure it has enough complexity to meet our requirements, while not being too ambitious in scope. If in doubt, please ask.
3. Requirements (marks)
We are expecting to see a fully working Rails application which includes:
- Views (30%):
- A home page.
- A contact page with contact form.
- Resource pages for all of your appropriate model resources. Only provide routes and actions to all of your resource paths if they are needed.
- All views conforming to best practice guidelines for HTML5 and CSS, for example as through boilerplate templates, with styles used to present content in a clear and appropriate way.
- Partials used to ensure that each page has a standardised header and footer.
- jQuery used where appropriate to assist in providing a good user experience (for example, checking that form fields are not empty prior to submission, if they are required).
- Controllers (20%):
- A controller to handle your home and contact page.
- Controllers for each of your model resources with an appropriate use of strong parameters.
- Only actions for those routes which are exposed.
- Appropriate tests for each of your controller actions, which all pass. You should also test basic view content within your controller tests.
- Mailer (10%):
- A mailer to handle your contact request. This does not need to be linked to an SMTP server.
- Appropriate previews and tests for the mailer, which all pass.
- Models (30%):
a. A series of database migrations that you have used to build your application, with the schema including appropriate fields, data types, defaults, nullability and indices.
October 2018 2
- At least three model classes which provide appropriate validations, associations and scopes.
- Appropriate tests for each of your models, which all pass.
5. Configuration (10%):
- Appropriate environment configuration for your application, including gems and environment settings.
- Only the required routes needed for your application.
- The use of localised strings throughout your application.
- A git repository showing your development through regular commits.
- Appropriate use of comments and code style throughout.
Refer to the attached marking scheme for the range of marks and expectations.
4. Optional Extras (no marks)
If you would like to include additional items in your project, feel free to do so, but please ensure that you meet the minimum requirements for marking, and that your optional extras do not break your code.
Some things you might consider:
- Authentication using Devise, perhaps with additional support for permissions and control using Pundit or Active Admin.
- Support for file uploads using Paperclip or CarrierWave, perhaps with ImageMagick support.
- The use of AJAX to provide in-place updates, or live streaming.
- Use of GitHub as a remote repository or deployment of your app to Heroku.
5. What to submit?
You can use whatever development tool you like to develop your application, including Codenvy, RubyMine or the command line. However, your app must be built using Ruby on Rails 4.2 or above and Ruby 2.0 or above.
Upload an archive containing the whole of your Rails app.
o Your archive should include all of your source code and git repository.
o Call the file username_com2025_project.tar (or .zip), where username is your
username.
o Upload your file to SurreyLearn.
- We will run the development version to mark your app using “rails server”.
- I will be testing using the Chrome browser with using Firefox as a backup. To reduce compatibility issues, please test your web app on the Chrome browser before
submitting
Please use the SurreyLearn assignment Discussion Board to ask any questions.
For any gems, images or other sources you use please ensure that you do not infringe any copyright (check image permissions) and only use gems for which the license permits (check the license).
October 2018 3