The project for this course is to build a web application for a blog. You will be designing and implementing your own REST API along with creating a web application front-end. The application need to enable users to log in and out and post blog entries.
The theme of the blog is open for you to decide. For example, you can dedicate it to sports, recipes, games, fashion, etc.
The database schema support posts and users.
See the following descriptions.
The user table
Table "public.blog_user"
Column | Type | Collation | Nullable | Default
----------+------------------------+-----------+----------+---------
id | integer | | not null |
username | character varying(256) | | not null |
password | text | | |
Indexes:
"blog_user_pkey" PRIMARY KEY, btree (id)
Referenced by:
TABLE "blog_comment" CONSTRAINT "blog_comment_user_id_fkey" FOREIGN KEY (user_id) REFERENCES blog_user(id)
TABLE "post" CONSTRAINT "post_user_id_fkey" FOREIGN KEY (user_id) REFERENCES blog_user(id)
Table "public.post"
Column | Type | Collation | Nullable | Default
-----------+---------+-----------+----------+---------
id | integer | | not null |
user_id | integer | | not null |
post_date | date | | not null |
post_text | text | | not null |
extra | json | | not null |
Indexes:
"post_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
"post_user_id_fkey" FOREIGN KEY (user_id) REFERENCES blog_user(id)
Referenced by:
TABLE "blog_comment" CONSTRAINT "blog_comment_post_id_fkey" FOREIGN KEY (post_id) REFERENCES post(id)
Out of the table definitions, the most interesting thing is the extra column in the post table. The column stores JSON data which allows you to store whatever additional structured data per post that you want. For example, if this was a recipe blog, storing the ingredients and instructions in the extra column. For a chocolate chip cookie recipe, the entry might look like this:
{"ingredients":["1 cup of butter", "1 cup of brown sugar", "1/2 cup of sugar", "3/4 teaspoon of baking soda", "1/2 teaspoon of salt", "2 eggs", "1 teaspoon of vanilla", "2 1/2 cups of flour", "1 pack of chocolate chips"], "instructions":"Pre-heat the oven to 375. Mix the butter, sugar, salt, baking soda and other wet ingredients. Mix in one cup of flour at a time until all of it is included. Mix in chocolate chips. Scoop up balls of cookie dough and place on a cookie sheet and bake for 8 to 10 minutes."}
Think creatively about what you may store in this column.
At the very least, the information you store here could be displayed specially on the blog.
Again, this column can be used for whatever you like, just make sure it fits with the theme of your application.
The projects has two halves: the REST API backend and the web application front-end. For this project, you must both design and implement the REST API along with a web application that uses the API.
The REST API needs to support the at least following:
The API needs to support the additional fields stored in the JSON column of the post table. Also the API must be well documented in your project's README.MD file.
The front-end needs to support at least the following:
The site must also run smoothly and look nice. It should be intuitive to navigate and use. Also, you need to error check and validate user input and interactions and present sensible error messages for bad inputs.
The project will be broken into a series of milestones.
This milestone has two major components:
For the front-end prototype, you need to create a landing page, a page or pages to create, update, and delete blog posts, and a page to search for and view blog posts by user. These pages need to make requests to a "stubbed-out" backend, be navigable, and styled with CSS.
The backend needs to be defined and documented in the README.md and be able to provide hard-coded fake data upon request. That is, the backend needs to be functional enough to allow the frontend to make requests and receive data. It does not need to use the database, validate user data, or authenticate the user.
Commit your code to branch m1 to turn in this milestone. After the due date, be sure to not commit any more changes to this branch, move onto the next milestone's branch!
This milestone will have two components as well:
Commit your code to branch m2 to turn in this milestone. After the due date, be sure to not commit any more changes to this branch, move onto the next milestone's branch!
This milestone will consist of:
Commit your code to branch m3 to turn in this milestone.
This page was last modified on 2026-08-19 at 20:15:09.
George Fox University · 414 N Meridian St · Newberg, Oregon 97132 · 503-538-8383
Copyright © 2018–2026 George Fox University. All rights reserved.