Partnership with the University of San Francisco
Hello everyone!
I look forward to our first meeting. I've invited all of you into my Slack group so we can communicate more effectively. Please make sure to add a profile image and your name to your Slack profile.
I'm going to need your GitHub usernames as well so I can invite you to the project. So when you get a chance, send me all of your GitHub usernames via Slack.
We are going to start the first 2 weeks of the semester building a test project so that everyone has experience with backend and frontend development. The test project is explained below.
Before that I want everyone to get a basic understanding of Javascript just in case some of you have never used it or need a quick reminder.
Here are some javascript tutorials I want you to read starting with the Mozilla link. It goes over the basics of Javascript, please spend at least 2 hours reading it. At the very minimum, I want you to read the section titled "Intermediate: A re-introduction to JavaScript" but feel free to start from the first section "Complete Beginners" if you've never had any Javascript experience. I provided other tutorials for you to review just in case you wanted more experience with Javascript.
GitHub Tutorial: Understanding the basics of GitHub
Read this if you don't have experience with Github
GitHub Student Education Resources
API tutorials: What is an API??
Read this if you don't know what an API is
Best Javascript Editor
API Test project
As described previously here is the Todo test project I want everyone to work on. The goal is to get experience building an API the first week and then learn how to build the frontend next week. In the third week, we will start the real project using this test project as the base of the project. I’m hoping the backend can be completed by our next meeting and the frontend by the following meeting. I know this is a lot for first time students but this will give me a clear understanding of everyone’s capabilities. These deadlines can always be extended.
Build an API with the following features and then upload a video showing all the functionality in our team Channel. This is an individual project but you’re more than welcome to reach out to each other for help
The goal of this Todo project is for everyone to get experience with the backend and frontend so you can understand what part of the tech stack you want to focus on for the real project. You can do both if you have the time or just focus on one based on your goals.
I’m going to work on writing up a more detailed description of the real project with a breakdown of the features we want to build over the next couple of days so you can include them in your Statement of Work (SOW). These can also be found under the semesters project page.
Let me know if you have any questions! I’ll send another update next week to remind you to upload a working video of your API and to let you know that you can now start working on the frontend side of the Todo project.
I look forward to working with all of you this semester!
Thanks for reading,
Jose Alvarado
I look forward to our first meeting. I've invited all of you into my Slack group so we can communicate more effectively. Please make sure to add a profile image and your name to your Slack profile.
I'm going to need your GitHub usernames as well so I can invite you to the project. So when you get a chance, send me all of your GitHub usernames via Slack.
We are going to start the first 2 weeks of the semester building a test project so that everyone has experience with backend and frontend development. The test project is explained below.
Before that I want everyone to get a basic understanding of Javascript just in case some of you have never used it or need a quick reminder.
Here are some javascript tutorials I want you to read starting with the Mozilla link. It goes over the basics of Javascript, please spend at least 2 hours reading it. At the very minimum, I want you to read the section titled "Intermediate: A re-introduction to JavaScript" but feel free to start from the first section "Complete Beginners" if you've never had any Javascript experience. I provided other tutorials for you to review just in case you wanted more experience with Javascript.
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
- https://laracasts.com/series/es6-cliffsnotes
- https://watchandcode.com/p/practical-javascript
- https://javascript30.com/
- https://www.codementor.io/learn-javascript-online
- https://www.quora.com/What-is-the-best-way-to-learn-JavaScript
GitHub Tutorial: Understanding the basics of GitHub
Read this if you don't have experience with Github
GitHub Student Education Resources
API tutorials: What is an API??
Read this if you don't know what an API is
- https://medium.com/@perrysetgo/what-exactly-is-an-api-69f36968a41f
- https://www.howtogeek.com/343877/what-is-an-api/
- https://www.freecodecamp.org/news/what-is-an-api-in-english-please-b880a3214a82/
Best Javascript Editor
- Visual Studio Code: https://code.visualstudio.com/
API Test project
As described previously here is the Todo test project I want everyone to work on. The goal is to get experience building an API the first week and then learn how to build the frontend next week. In the third week, we will start the real project using this test project as the base of the project. I’m hoping the backend can be completed by our next meeting and the frontend by the following meeting. I know this is a lot for first time students but this will give me a clear understanding of everyone’s capabilities. These deadlines can always be extended.
Build an API with the following features and then upload a video showing all the functionality in our team Channel. This is an individual project but you’re more than welcome to reach out to each other for help
- Node.js API (First Week)
- POST: Create a TodoList
- GET: Get all of the TodoLists
- POST: Create a TodoItem for a specific list
- GET: Get all the TodoItem's in the TodoList
- PUT: Update a TodoItem and mark it as done
- DELETE: Delete a TodoListItem
- DELETE: Delete a TodoList
- Useful tools
- Postman to make local API requests
- Use the following Node.js packages
- Database
- PostgresSQL
- You will need to find a client that works with your machine
- PostgresSQL
- Second Week - Front End (Web or Mobile TBD) App
- This app should call all of the APIs you created previously
- The UI is not that important for this part but you’re encouraged to improve the UI if you finish the tasks above
- Advanced Assignment [Don’t start this unless you finish the assignment above]
- Add sign up/login for users
- Allow users to manage their own TodoLists and TodoListItems
- Use JWT (Json Web Tokens) to handle user authentication. You may need an additional encryption npm
- Feel free to add anything else!
- Add sign up/login for users
The goal of this Todo project is for everyone to get experience with the backend and frontend so you can understand what part of the tech stack you want to focus on for the real project. You can do both if you have the time or just focus on one based on your goals.
I’m going to work on writing up a more detailed description of the real project with a breakdown of the features we want to build over the next couple of days so you can include them in your Statement of Work (SOW). These can also be found under the semesters project page.
Let me know if you have any questions! I’ll send another update next week to remind you to upload a working video of your API and to let you know that you can now start working on the frontend side of the Todo project.
I look forward to working with all of you this semester!
Thanks for reading,
Jose Alvarado
Here's an example of a database/table schema for a todo list application that supports multiple lists per user:
USERS Table
USERS Table
- id (primary key)
- username
- password_hash
- id (primary key)
- user_id (foreign key referencing USERS.id)
- title
- id (primary key)
- todo_list_id (foreign key referencing TODO_LISTS.id)
- content
- due_date
- is_completed
Example of Class Schedule
As part of the project spec or SOW you will be required to submit a class schedule. Below is an example from a previous class to use as a references. I want you to write up your own class schedule based on 3 or 4 core features that need to get done by the end of the semester and then sprinkle in any other features along the way. These 4 core features will be broken up into 2 week sprints as shown below.
2022 Decentralized Storage Project
Class Schedule
Make sure to review it with each other and let me know if you have any questions!
2022 Decentralized Storage Project
Class Schedule
- 9/19
- TodoList Project - Node.js Assignment: Create an API that can do the following requests
- POST: Create a TodoList
- GET: Get al of the TodoLists
- POST: Create a TodoItem for a specific list
- GET: Get all the TodoItem's in the TodoList
- PUT: Update a TodoItem and mark it as done
- DELETE: Delete a TodoListItem
- DELETE: Delete a TodoList
- TodoList Project - Node.js Assignment: Create an API that can do the following requests
- 9/26
- TodoList Project - Frontend Assignment: Create a frontend that connects to your API
- Create the UI for the TodoList project you made last week
- TodoList Project - Frontend Assignment: Create a frontend that connects to your API
- 10/10 Sprint 1 - Sign up and Login
- Create Accounts
- Sign up and log in
- Email and password required
- Dashboard
- Edit profile
- First and last name
- Users can apply to become a host by submitting their bank credentials
- Log out
- Reset password and update email address
- Edit profile
- Create Accounts
- 10/24 Sprint 2 - Crete listings
- Approved hosts can see an additional tab where they can create and view their listings
- Hosts can create listings
- Select type of storage
- Enter price per month or per day, location, description
- Upload pictures
- Hosts can view and edit all of their listings
- 10/28 Midterm Presentation
- 11/7 Sprint 3 - Search listings + Message hosts
- Dashboard
- Users can view and search listings
- Filter by location and price
- Maybe add a map
- Users can tap on the listing to see the details
- Users can view and search listings
- Users can message the hosts
- Dashboard
- 11/21 Sprint 4 - Complete transactions + View Reservation History + Rating System
- Users can complete a transaction using Stripe
- Users should send a message to hosts to go over the details of arriving
- We take 10% of the transaction
- Users and hosts can see a history of all of their transactions
- Users and hosts will be able to rate each other
- That rating will be visible when viewing the listing
- Hosts can get their funds deposited immediately
- Users can complete a transaction using Stripe
- 12/9 Final Deliverables Due
- Final Paper
- If papers are not required, then a reference document outlining a summary of the app
- A detailed README file outlining how to run and make changes to the app
- Fix remaining bugs + improve the UI
- Final Paper
- 12/12 Class Ends
Make sure to review it with each other and let me know if you have any questions!