Skip to content
Permalink
Browse files
initial commit
  • Loading branch information
aa7401 committed Jul 18, 2019
0 parents commit 94896f93bf4db31feeb6dc4ab7805a85ab52a1bd
Show file tree
Hide file tree
Showing 15 changed files with 412 additions and 0 deletions.
@@ -0,0 +1,24 @@

# Computer Reseller

Build a website for an online company selling new computers (either Apple, Dell or HP):

## Basic

1. Customers can browse the computer models without logging in.
2. When they log in they can click on a button to add the item to their shopping cart. They can view the shopping cart.
3. New products can be added by the admin user, each new product should include a single product picture.

## Intermediate

1. In addition, the customers can customise the products from fixed options before adding to the cart.
2. Items can be removed from the cart.
3. When registering their account they should supply a delivery address.
4. When new items are added, the admin should be able to add more than one product picture and specify each option with a price attached.

## Advanced

1. In addition the customer can search for products.
2. At any point they can update their contact details.
3. A customer can enter a promotional code to receive either a 5%, 10% or 20% discount.
4. The admin user should be able to add multiple promo codes and assign a discount value to each.
@@ -0,0 +1,24 @@

# E-Learning Tool

Build an online e-learning tool to teach someone about git:

## Basic

1. When a user has logged in they should see several pages of learning content (which is stored in the database) including images.
2. The user will be able to click on the next link to see the next page of content and go back using a previous link.
3. On every page the user should see a "test your understanding" link. If they click on this they should be taken to the 10 question multiple choice quiz.
4. Each question should be on its own page with links to take the user to the next question or back to the previous one.
5. At the end of the quiz the user should be able to see their score which should be stored in the database and viewable on the home page next time they log in.

## Intermediate

1. In addition, the information screens should be editable by the admin user (adding more screens and editing the existing ones.
2. The quiz questions should be randomly selected from a bank of 20 questions.

## Advanced

1. In addition, the logged in user should be able to choose from several different sets of teaching materials (the second topic should cover html5).
2. Each set of teaching materials should have its own question bank.
3. Users should see a list of the past scores.
4. Any score lower than 40% should be marked as a fail.
@@ -0,0 +1,40 @@

# Exchange

Users should be able to login and post a list of items they want to exchange:
Packages: sharp, nodemailer.

## Basic

A simple website to share details of items to be swapped.

1. Without logging in visitors can view the items (thumbnail and description) that users want to swap.
2. When logged in they can create their own list of items to swap, this should include:
1. Short description.
2. Uploaded photo.
3. List of the items they are looking to swap for.
3. When logged in, a user can click on an item to see a page that shows:
1. The item details
2. The details of the user wanting to swap
3. The list of items they want to swap for.

## Intermediate

This step adds features that improve the site's GDPR compliance.

1. The item details page should not display any personally-identifiable details such as the user's name or email address or profile picture.
2. The details page should display a dropdown list containing the items the viewing user want to swap.
3. Clicking on the 'make an offer' should automatically send an email (without using the email client) that contains:
1. The details of the person making the offer.
2. The item they want.
3. The item they are willing to swap.

## Advanced

The final step is to build an auto-suggestion feature to make it easier for the users to find someone willing to swap.

1. The site should include a full-text search for items people are looking for.
2. Users should create the list of items they want to swap for by choosing from a dropdown list and clicking an 'add' button. If the item is not in the list they can enter it manually.
3. The system should analyse the items the person wants, compare it to the items people want to swap and automatically suggest the swaps by sending out an automatic email to both parties.
4. Each item the person wants to swap should have a 'suggested swaps' link that takes them to a page that suggests who might be willing to swap and for what, including pictures.
5. This should include the 'make an offer' button.
@@ -0,0 +1,24 @@

# File Sharing

Create a website that allows a user to share files:
Packages: crypto.

## Basic

1. Allow logged-in users to upload files to the server.
2. They should be able to email a link to their friends who can use this to download the file.
3. The files should not be stored in the public directory
4. The download link should include a hash string, not the file name.

## Intermediate

1. Any files should be deleted once they have been downloaded or after 3 days (whichever comes first).
2. All files should download (even if they could display in the web browser).

## Advanced

1. The person uploading the file can choose the username of the user who can access it.
2. This username must already exist.
3. Users need to log in to see a list of the files they can download.
4. All files in the list should have an appropriate icon reflecting what type of file they are and include information such as the file size and the date and time the file was uploaded as well as how long before it will be deleted.
@@ -0,0 +1,17 @@

# Forum

Build a message board to allow users to post information and reply to other people's posts.
Packages: sharp, nodemailer.

## Basic

Xxx

## Intermediate

Xxx

## Advanced

Xxx
@@ -0,0 +1,40 @@

# Frequently Asked Questions

Build a knowledge-base system where users can post and answer questions. You can choose the topic. Some suggestions might include University procedures or NodeJS.
Packages: sharp.

## Basic

This will produce a basic yet functional FAQ system.

1. Without logging in a user can view all the question titles and dates on the homepage.
2. Clicking on a question title takes the user to a details page where they can see the question details together with any answers supplied by other users.
3. If a user logs in they can add new questions. This should include:
1. A short title.
2. A detailed description of the problem.
3. An optional photo or screenshot.
4. If a logged in user views a question details page they will be able to add an answer.

## Intermediate

This adds some additional functionality.

1. The optional screenshot should be displayed as a low-resolution thumbnail.
2. Clicking on the thumbnail should display the full-resolution image.
3. The person who posted the original question can flag one of the answers as the correct one.
4. This correct answer should be flagged on the details page.
5. On the home page any question that has a correct answer flag should be indicated as 'solved' on the homepage.
6. Any logged in user can rate any answer that they did not provide on a scale of 1-5 stars.

## Advanced

The advanced functionality covers gamification.

1. Every user start off with a contribution score of 0.
2. Logged in users can flag answers as off topic or inappropriate. This takes 5 points off the poster's score.
3. Every answer flagged as correct adds 50 points to the posting person's contribution score.
4. The best users are flagged with a gold, silver or bronze start:
1. The top 5% of users are flagged with a gold star.
2. The top 25% are flagged as silver.
3. The top 50% are flagged as bronze star users.
@@ -0,0 +1,36 @@

# Gallery

Build a website for up and coming artists/photographers:
Packages: sharp, image-watermark, nodemailer.

## Basic

1. The home screen should display a grid of items for sale from all the users, this should include the image, name of the item and a price.
2. Registered users can click on items they like and this should display a details page that contains both all the product details and the profile picture and contact details of the person selling.
3. Users can create accounts and upload new items for sale. They should include:
1. A photo of the item.
2. A title.
3. A short description.
4. A detailed description.
5. An asking price.

## Intermediate

1. Each user has their own homepage where their items appear.
2. Any item where a user has expressed an interest should be flagged with the level of interest shown, this information should be displayed both on the user's home page and on the home screen, visible to all users.
3. The details page should display multiple images of the product for sale.
4. In order to comply with GDPR the contact details on the details screen should be replaced with a 'contact seller' button. This should ask the person to enter a message then automatically send an email to the seller (without using the email client).
5. The email should include the product details, the details of the person making the query and the message and offer.

## Advanced

1. Users should enter their paypal username when creating their account.
2. Users who are interested in a piece of artwork can make an online payment (fake the paypal payment screen).
3. When an item is paid for:
1. It should be flagged as sold so that no-one else can buy.
2. An email should be sent to the seller with details of the buyer.
4. Users can perform a global search for items of interest. This should search the title as well as short and long descriptions.
5. The gallery and details page should display low-res thumbnail photos
1. Clicking on a thumbnail should display the full-size image with a watermark added.
6. The seller can edit item details and remove them when sold.
@@ -0,0 +1,23 @@

# Game Reviews

Build a community website to review games (you can choose what type):
Packages: sharp.

## Basic

1. Logged-in users should be able to browse a list of games (including publisher, title, summary, detailed description and photos).
2. Users should be able to add reviews.

## Intermediate

1. In addition the games should be arranged in suitable categories.
2. Users should be able to add new games if these are not already in the list.
3. Users should be able to rate the games.
4. All new reviews should be flagged as pending until checked and released by the site admin.

## Advanced

1. In addition, the site should be full-text searchable.
2. Reviewers should be able to upload screenshots of the game they are reviewing.
3. Users can comment on other reviews.
@@ -0,0 +1,37 @@

# Local News

Build a local news site where users can log in an post local news and events:
Packages: sharp, nodemailer.

## Basic

A simple website that displays news articles written by its registered users.

1. Each article should include as a minimum the following fields:
1. Headline
2. Short summary
3. Photo
4. Multi-line content
5. Date added (auto generated by the site).
2. Users, whether logged in or not, can see a list of all the news articles with the most recent at the top displayed on the home page.
3. Each article displayed on the home page should include only the headline, thumbnail photo, date added and short summary.
4. Clicking on any of these articles should load a page that displays the entire article (all fields).
Once registered and logged in, users can write new articles which automatically appear on the home page.

## Intermediate

1. The admin user should check and release articles before they are made available to site users.
2. All new articles should be marked as pending and hidden from the public's view until an admin person logs in, checks the content and flags it as released.
3. Users can edit existing articles but this will reflag them as pending.
4. The user should be prompted if they try to add or edit an article with missing fields.

## Advanced

1. The site should be fully searchable and users should be able to rate articles written by others and receive a daily email summary.
2. Users should be able to full-text search the news articles. The search should include text in the title, short summary and multi-line content.
3. Logged in users can rate other people's articles using a 5 star scale.
4. The average rating should be displayed next to each article both on the home page list and when viewing the entire article.
5. Articles can have more than one photo.
6. Each morning at 08:00 registered users should receive an email summarising all the articles added over the past 24 hours.
7. If no new articles have been added the email should not be sent.
@@ -0,0 +1,26 @@

# My Music

Build a website that allows users to upload music files and create playlists:
Packages: music-metadata, node-id3, node-lame.

## Basic

1. Users should be able to login and upload mp3 files.
2. These should be displayed in a single list and for each song the page should extract and display the ID3 data extracted from the file.
3. The user should be able to play these back through the web browser.

## Intermediate

1. A user should be able to create multiple playlists.
2. When a music file is uploaded it should be assigned to a specific playlist.
3. Each playlist should have a square image uploaded as its album art when it is added.
4. If the image is not square it should be auto-cropped to make it so (but keep aspect ratio).
5. Any non-music file that a user tries to upload should be rejected with the reason given.

## Advanced

1. The user should be able to view, play, rate and comment on other peoples playlists.
2. Ratings should be on a 5 star scale.
3. A user should be able to see other users' comments plus the average rating.
4. A user should be able to see the same on other people's playlists.
@@ -0,0 +1,8 @@

# Project List 2.0

Notes: Each of the projects contains a list of features listed in order of complexity. All the scenarios should be based on the login system covered during the tutorials and build on it.

In each of the scenarios there are three levels of complexity listed, these correspond to the 40%, 60% and 80% thresholds for functionality. If you attempt the task but fail to achieve the lowest level of functionality you will be awarded a grade of 20%.

To achieve 100% for functionality you should also integrate third-party data into the site either though an existing API or by screen-scraping.
@@ -0,0 +1,26 @@

# Restaurant Reviews

Build a website which allows customers to review local restaurants:

## Basic

1. The site admin should have a tool to add restaurants to a list including type and address.
2. Users can see a list of the restaurants displayed on the home page without needing to log in.
3. The home page should display the restaurant name and a thumbnail photo.
4. If a restaurant is selected it should load a details page that includes its address and more photos.
5. If a user is logged in this details page should display all the reviews left by customers with the latest one at the top
6. If the user is logged in both the home page and details page should display the average rating left by the reviewers.
7. Whilst on the details page they should be able to leave their own review including a rating on a scale of 1-5 stars.

## Intermediate

1. In addition, the restaurants should be displayed in rating order with the best rated at the top.
2. All reviews should be marked as pending until the site admin releases them.
3. Pending reviews should not be publicly visible.

## Advanced

1. The site should implement full-text searching.
2. Logged in users can add comments to other people's reviews.
3. Restaurants can be assigned to the owner's account who can update their own restaurant details (one owner might be assigned several restaurants).
@@ -0,0 +1,19 @@

# Stock Inventory

Build a stock control and monitoring (SCM) system for a shop that sells Arduino Microcontrollers and associate electronic components:

## Basic

1. The stock control team should be able to add items to stock based on their barcode (EAN) number.
2. If the item exists the stock level should be adjusted rather than adding a new product record.
3. When an item is sold at the till, each time an item is entered, the stock level should drop by one.

## Intermediate

1. In addition, the returns department need a way to check returned items back into stock.
2. The auditing team need a way to modify the stock levels recorded based on a stock count.

## Advanced

1. In addition the system needs to be able to track overall sales (by value) and sales of each component (by qty) over time.
@@ -0,0 +1,32 @@

# Student CVs

Build a website where users (students) can share their CV with employers:
Packages: sharp, nodemailer.

## Basic

1. Anyone (whether logged in or not) can view the home screen which lists all the CVs currently uploaded.
2. This screen should include the short summary information only.
3. When a user is logged in they can create and update their personal CV.
4. The CV should include a short summary field for use on the home page and the option to upload a profile photo.
5. Logged in users can see a 'details' link under each summary on the home page.
6. Clicking on a cv summary on a 'details; link takes them to page that displays the entire CV.

## Intermediate

We will now add a feature to protect users' personal details and so better comply with GDPR.

1. When a logged in user views a complete CV it should not show any personally-identifiable information such as name or address.
2. There should be a 'contact' button at the bottom of the CV details page which should automatically send an email to the person who's CV is being examined (directly from the site, not using the email client on a person's computer).
3. This auto-generated CV should include the email and phone number of the person who clicked the button.

## Advanced

1. Finally we will refine the contact feature so that users can click on a link to provide access to their complete CV.
2. In addition, the site should include a full-text search functionality.
3. When a user clicks on the 'contact' button:
4. Their name and employer should be added to a list visible to the other user.
5. A user has access to a page containing a list of users who have clicked their button.
6. Next to each button there is a 'release CV' button.
7. Clicking this button sends an email to the user and when they view the CV in future they can see all the fields including personal details.

0 comments on commit 94896f9

Please sign in to comment.