Project Proposal
Project Proposed:
For my project, I would like to create a full stack, e-commerce website.
My wife makes and sells custom jewelry using the flowers from funerals of passed-away loved ones.
Business for her has grown and she would like to have an online presence. I thought that this would be the perfect
opportunity to learn how to build a website. For my project, I will need to learn HTML, CSS, JavaScript and SQL,
which will give me experience using these web focused development languages and technologies. I plan to use Node.js / Express
to create the server application that will provide the link between the site and the SQLite database.
For purposes of this project, my research has shown that a SQLite database would be best for this project,
since it will be housed locally and, for the time being, will only include mock data for learning purposes.
Vision statement:
how will this project expand your professional skills and knowledge?
One area of Computer Science that I've never had any exposure to is web development.
By setting out to build a full-stack, e-commerce web site, I am setting myself up to be exposed
to and learn about a whole new sector of the profession. While building this project, I&aposm going
to need to learn a whole suite of new languages and concepts. I have never touched HTML, CSS, JavaScript
or SQL in my career, nor have I ever worked with Databases such as SQLite or PostgreSQL. Once I
gain this experience, I feel it will make me a more well-rounded Computer Scientist as well
as a more marketable candidate for internships and jobs.
Motivation: why is this project important to you?
Web development is always something that has interested me, but I never had the time with the work load of other courses,
job and family. There is something about creating a website/app than can be then used by anyone with an internet connection
that really excites and motivates me to learn the technology behind it. Additionally, in my journey to switch from the accounting
and finance world to software engineering, I've been looking at internship job descriptions and a lot of them out there are focused
on these web development technologies or would like to see experience with them. As this is one of my goals in the near future,
I want to make myself more marketable for these opportunities and be able to speak to the technologies.
The specific idea of creating an e-commerce website stem from my experience of being an accountant.
I felt this would be a natural fit for a first-time website. Also, with the product being offered on the
site being my wife's custom-made jewelry, this is something personal that I could expand on and turn into a live website.
Specific and measurable goals (learning objectives) for the project. Remember that ~45 hours will be dedicated to the course and
project over the 16-week (or 12-week summer) semester. You want to limit the scope of your project based on that time limitation.
The overall objective of the project is to create an e-commerce website where a customer could enter the site, browse the offerings,
make an order. The website will be able to record / retain the customer and sales information on a locally maintained database (for purposes of the project).
The business owner would then be able to log into the site and view and interact with the order details on the database such as approving
the order and changing order status. Key elements of this project that I plan to learn and implement are as follows:
HTML and CSS – These are necessary to create the structure and design of the website.
JavaScript – This will enable the user to interact with the website
Node.js / Express – Using JavaScript outside of the browser to interact with the SQL database.
SQLite – A serverless and locally maintained RDBMS – This will be a good entry point for me
to dive into learning how to interact with databases / learn SQL and not have to worry about having to host on more robust database engines.
My overall goal is to gain experience in these web technologies and build a foundation of knowledge of how a website is built and runs. Ultimately, I will be able to
prove to myself that I've learned this foundation once I've completed the website and it performs as expected.
Risks to project completion:
New Technologies: The biggest risk for me in working on this is that all of these technologies are completely new to me. As I
previously noted, I have never been exposed to any of the languages necessary to create a website. While very exciting,
diving into web development makes me a little nervous due to me 'breaking out on my own'. By this I mean,
in all my classes, we're essentially given what we're supposed to learn for the course, so that, in a sense,
makes it easier – at least from a resource perspective. Learning a whole new computer science
topic and then making something that works, independently, is a new type of journey for me, but I
know this is a critical part of actually working in the field. I'm excited to have this opportunity to do a project like this.
Time Constraints:
Another risk for me is just running out of time. Working a full time job as a CPA can sometimes be a little hectic
and can sometimes get in the way of my learning, no matter how much I'd rather be learning these new skill sets instead.
Additionally, family life can sometime be a time consuming endeavor, especially having a toddler at home. Managing my time is
going to be critical in making sure I can get through this project.
Scope Creep:
While I would actually like to make this a live website, there are a ton of things that I would eventually
like to add to the site, but with this being my first time working with the web stack, I want to limit myself and make sure that
I can create a site that has basic functionality and performs as expected before trying to expand it.
Mitigation Strategy for the risks listed above
In order to mitigate the risks due to learning the new technologies, I've been looking into resources that will help
me learn these languages. I'm a structured kind of person. I'm personally not a huge fan of just watching random
Youtube videos to learn a new subject – I like to use these to complement or get targeted guidance. Instead, I like something
that has path with clear learning objectives, especially when starting something new. I've found some courses that cover the
languages I need to learn on Codecademy so I plan to use these as a basis in learning the languages and then expand to other
resources, such as books I've accumulated or websites like W3 School, Geeksforgeeks and Mozilla Developer Network (MDN),
which has some really good tutorials, as needed once I have a basic understanding. This will give me some much needed
structure and allow me to set targets for myself for the day/week.
For mitigating the time issue; by setting up weekly goals for myself, this will help me stay on track and help me structure
my week as I progress. Also, I plan to set aside time throughout the week to essentially detach myself from everything and
focus on the project. Overall, I plan to spend a little more time than the time required for the course so I can thoroughly
learn these new technologies and build my website.
To make sure that I stay in scope, I will lay out how I want the site to look and detail what features will be available to
the site user before I begin. This will help me stay focused on what will be included on the site and allow me to focus in on
what I need to learn to make it all work.
Project Assessments - provide a list of evaluation criteria for the project.
Describe how you will know that your project is completed and meets your goals.
Completion of the Codecademy course work for learning the languages – will give me
confidence that I'm progressing with the languages and help me gauge where I'm at or
If I need to put more time into the language. Assess where my skills are currently at
relative to the needs of the website.
For example, although I want to learn everything, for the purposes of the project,
I don't need to go into far more advanced JavaScript as necessary – it will just slow down completion of the project.
For the website project itself, there are a handful of main evaluation criteria.The website needs
to look good and provide a good user interface. Everything within the site where a user should be able to interact with
the website, should work correctly and agree with the specifications I lay out for the site before beginning.
Data should be correctly posted to and pulled from the SQLite database.
I initially want to just have 3 main sections / pages of the website: the home page, the product page and an order page.
Once I can get these working, I want to then start adding in additional features like allowing the site owner to access
and interact with the order details via dashboard, have different types of products, allow users and the site owner to log
in to accounts, etc.
I used Generative AI to create a roadmap that I can follow as I begin learning the languages and begin working on my project.
Just seeing this laid out gives me confidence that I can accomplish this in the allotted time frame. Of course, this most
likely won't be followed exactly, but it gives me a good reference as to where I should be week to week as I progress.
Project Timeline
Week 1:
Setup and Introduction to HTML
Learning Objectives:
Understand the basics of web development: client-server model, role of HTML/CSS, JavaScript, and backend.
Learn HTML basics: tags, attributes, semantic elements (e.g., <header>, <nav>, <main>).
Project Tasks:
Install tools: VS Code, Node.js, SQLite, and a browser (e.g., Chrome).
Create a project folder with index.html for the home page.
Write basic HTML for the home page (e.g., header, footer, placeholder content for jewelry).
Week 2:
CSS Basics
Learning Objectives:
Learn CSS basics: selectors, properties, box model, and basic layouts (e.g., Flexbox).
Understand responsive design concepts (e.g., relative units like %, vw, rem).
Project Tasks:
Style index.html with CSS: add colors, fonts, and a simple layout for the home page.
Create a navigation bar linking to a placeholder product page.
Week 3:
Intermediate HTML/CSS and Project Structure
Learning Objectives:
Learn advanced HTML: forms, input types, and accessibility basics.
Deepen CSS knowledge: positioning, pseudo-classes, and media queries.
Project Tasks:
Create a product page (product.html) with a sample jewelry item (image, description, price).
Style the product page to match the home page’s design.
Plan the database schema: tables for products (e.g., ID, name, price, description) and orders (e.g., ID, product ID, customization options, customer info).
Week 4:
JavaScript Basics
Learning Objectives:
Learn JavaScript basics: variables, functions, DOM manipulation, and event listeners.
Understand how JavaScript interacts with HTML/CSS.
Project Tasks:
Add a simple JavaScript feature to the product page (e.g., a button to show/hide product details).
Create a basic order form in HTML (order.html) with fields for customization options (e.g., material, size, engraving).
Week 5:
Node.js and Express Setup
Learning Objectives:
Understand Node.js and Express: setting up a server, handling routes, and serving static files.
Learn basic HTTP methods (GET, POST).
Project Tasks:
Set up a Node.js/Express server in your project folder.
Serve index.html, product.html, and order.html using Express routes.
Test the server locally to ensure pages load correctly.
Week 6:
SQLite Basics and Database Integration
Learning Objectives:
Learn SQLite basics: creating tables, inserting data, and querying with SQL.
Understand how to connect SQLite with Node.js using the sqlite3 package.
Project Tasks:
Create a SQLite database with tables for products and orders (based on Week 3 schema).
Populate the products table with sample jewelry data (e.g., 3–5 items).
Write a simple Express route to fetch and display product data on the product page.
Week 7:
JavaScript for Form Handling
Learning Objectives:
Learn JavaScript for form validation and submission.
Understand asynchronous JavaScript: fetch API for sending data to the server.
Project Tasks:
Add client-side form validation to order.html (e.g., ensure required fields are filled).
Use JavaScript to send form data to an Express route via a POST request.
Week 8:
Backend Order Processing
Learning Objectives:
Learn how to handle POST requests in Express.
Understand how to insert data into SQLite from Express.
Project Tasks:
Create an Express route to handle order form submissions.
Save order data (e.g., product ID, customization options) to the SQLite orders table.
Return a confirmation message to the client upon successful order submission.
Week 9:
Enhancing Frontend Functionality
Learning Objectives:
Learn advanced JavaScript: dynamic content rendering and error handling.
Deepen CSS knowledge for polish (e.g., hover effects, transitions).
Project Tasks:
Dynamically populate the product page with data from the SQLite database using JavaScript.
Add CSS animations or hover effects to improve user experience (e.g., on buttons or images).
Week 10:
Testing and Debugging
Learning Objectives:
Learn basic debugging techniques: browser DevTools, Node.js console logs.
Understand testing a full-stack application (frontend and backend).
Project Tasks:
Test the website: navigate between pages, submit orders, and verify data in SQLite.
Fix any bugs (e.g., broken links, form submission errors, or database issues).
Ensure responsiveness across devices (desktop and mobile).
Week 11:
Final Polish and Documentation
Learning Objectives:
Learn how to document a project: code comments, user guide.
Understand basic deployment concepts (optional for learning, not required for project).
Project Tasks:
Add comments to your HTML, CSS, JavaScript, and Node.js code.
Create a simple README.md file explaining how to run the project and its features.
Polish the UI: ensure consistent fonts, colors, and spacing across pages.
Week 12:
Presentation and Submission
Learning Objectives:
Prepare a project presentation: explain what you built, what you learned, and challenges faced.
Review all project requirements for submission.
Project Tasks:
Record a demo video or prepare a live demo of the website (home page, product page, order form).
Submit the project files (code, database, README) as required by your instructor.
Practice explaining the tech stack and your implementation process.