Goal
To apply knowledge of JavaScript techniques to implement the front-end functionality for a social media application.
API
The API you are using for this project can be found under Social Endpoints in the Noroff API documentation.
Brief
You have been tasked with producing a new JavaScript front-end client for an existing social media platform. The client application must be attractive and responsive, but you have an otherwise blank slate in terms of theme design language.
Using the provided API and API documentation, create a functioning user interface that allows for viewing, posting, editing and deleting social media content.
Social API routes require both a JWT token and an API Key. You will need to register an account and login to access your token. To create an API Key, follow the documentation here.
To complete the required features, you will also need to make use of GET
, POST
, PUT
, and DELETE
HTTP methods.
You must use JSDocs to document at least one function. The minimum requirement is one example of well written JSDocs for a function that includes argument types, return types, a description and a usage example. If you have remaining time before delivery, you should use this to document all of your remaining functions.
Using localStorage is highly recommended, especially for storing JWT tokens.
A finished project fulfils the requirements below with an easy to use and error-free user interface.
Required features
The following user stories are required for a passing submission:
- User with
@noroff.no
or@stud.noroff.no
email can register profile - Registered user can login
- User can view a post content feed
- User can filter the post content feed
- User can search the post content feed
- User can view a post content item by ID
- User can create a post content item
- User can update a post content item
- User can delete a post content item
Additional features
The following user stories are optional:
- User can create a comment on a post
- User can edit profile media
- User can follow/unfollow a profile
- User can react to a post content item
Team work
This assignment allows for team work in groups of 2 students. Students forming a work group will need to coordinate closely throughout the planning, development and testing processes. By working in a pair, you are expected to implement additional features.
Commit regularly and use branches to prevent conflicts with your teammate as you work on the same codebase.
Development process
- Create or select one repository to use throughout this project.
- Create a
js2
branch from the defaultmaster
ormain
branch. -
You may use either Trello or GitHub Projects to manage your development tasks. If you are using Trello, please make sure that your board is public and that a link is provided in your
readme.md
file. Make sure to detail tasks accurately and divide them evenly if working a group.Examples of overly vague tasks:
- Make the HTML for the post page
- Website Styling
- JavaScript for API
- Test the website
Examples of detailed & accurate tasks:
- Create search form HTML
- Search form SCSS styling
- Filter posts function
- Implement search event listener
- Review the API Documentation and API Swagger.
- Plan your approach, desired features and work strategy.
-
Implement the required features as per your work plan.
Note: All PRs should be made to
js2
, not to the default branch. For example, branchsearch-functionality
should be created from, and merged into, branchjs2
. - Submit a link to your repository at the correct branch on the Moodle forum for peer review.
-
Review 2 of your peers projects. (4 per team)
- Open a Pull Request from
js2
into the default branch. - Optionally, contact a peer for feedback. If there is a particular area of concern, please ensure to pass this on with your request. Please make sure to plan for this review prior to your deadline. Implement any feedback gathered, but leave the PR open.
- Deliver the link to the open PR in Moodle. A passing submission will be approved and merged by the reviewer. This is a direct analogue of the professional review process.
Restrictions
- Required functionality must be implemented in original, pure JavaScript.
- A CSS Framework may be used to build the application UI.
- A
.gitignore
file must be provided includingnode_modules
. This folder must be untracked. - Content posted on the API is public and associated with your identity. Be appropriate and respectful.