Monthly Archives: April 2022

Capstone Project – Week 4

This week I am going to discuss the current state of my capstone project.  Currently, I am working on a page for our mobile app that (1) allows the user to create a new post on Craigslist and (2) shows a list of all their posts currently on Craigslist.  In order to implement these features, I had to do quite a bit of work on the backend of our project.

First, I need to deploy our app on Amazon’s Amplify.  This was fairly straightforward but it required a lot of research beforehand.  Amazon’s AWS is pretty intimidating when your first take a look at it.  There are so many features, tools, applications, APIs, databases, and on and on.  The hardest part is just figuring out what tools you need.  After some research, I decided that Amplify was a great place to start because it is an application that houses many tools under 1, (somewhat) simple interface.  So, after following a step-by-step guide, I soon had our app deployed on Amplify.

The next step was to get our database set up through DataStore.  This was much more involved, and it took many hours of troubleshooting and experimentation to create a connection with DataStore and do CRUD operations.  DataStroe does provide a GUI for defining models and I found this quite intuitive and helpful.  However, I found the instructions for Flutter to be somewhat lacking so I ran into some issues when trying to import the models into our app.  The biggest obstacle was creating a relationship between 2 models in the app and having that reflected in DataStore. 

Finally, I needed to deploy Amazon S3 for image storage.  This was actually quite simple because the guide provided by Amazon is pretty thorough.  I also was able to reference an old project from CS492 that used Google’s Firebase for image storage.  Comparing the two, I was quite surprised by how much simpler Firebase’s code was and how much more was handled behind the scenes with built-in functions. 

Next week I plan to work more on the UI and image display.  Stay tuned!

Capstone Project – Week 3

This week I will again be discussing the current state of my capstone project.  We are officially in Week 3 and things are quickly starting to pick up.  First, my group put together a project plan which outlines the basic layout and approach of our “improved Craigslist” app.  I contributed to the plan by taking on 3 tasks including laying out the backend, setting up our project management system, and making a chart showing the breakdown of labor for the group.

When I first started thinking about the backend, I had a lot of ideas and really only 1 constraint.  That constraint was that we needed to use Amazon S3 for image storage.  After doing some research on Amazon Web Services, I quickly realized that we could pretty much implement our entire backend on AWS.  User authentication, databases, image storage, hosting were all supported by AWS and there was even a step-by-step guide using Flutter.  Perfect!  Next, I needed to decide what kind of database to use – relational or non-relational? For non-relational, AWS supports DynamoDB and for relational, AWS will support a number of different DBs including PostgreSQL, MariaDB, and MySQL.  After discussing the options with my group, we decided that relational was the way to go and I suggested we use PostgreSQL.  I have some experience with that DB and I really enjoy using pgAdmin, which is a tool that allows you to view/edit PostgreSQL tables in a standalone app.  With that, I started putting together an Entity-Relationship Diagram so we have a rough idea of our models and how they related to one another.

Next I set up our project management system.  I decided to use Jira because I have used it in a previous class (CS361) and I thought it was fairly straightforward to use.  I think having a PM system is extremely important because it gives us experience with the Agile/Scrum methodology and let us use a tool that is very prevalent in the SWE industry. 

Finally, I put together a simple chart showing the division of labor in our group.  The chart was separated into 3 areas: frontend, backend, and documentation.  As a group, we decided that we all want to have a hand in each of these areas, so we tried to divide them as evenly as we could.  As the project gets further along, however, I am sure that things will change and each person might focus more on one area than another.  This is expected and it is best that we remain flexible and open to change.

Capstone Project – Week 2

This week I will be discussing the current state of my capstone project for CS467.  Back in March before the class had even started, I made a post on the OSU Online CS subreddit seeking partners for the project.  I figured if I could find other people who were thinking about capstone before the class had even started, they would make great partners.  Pretty soon I found 2 people with similar schedules and ideas about the project, and we decided to form a group.

When it came time pick a project, we were kind of all over the place.  I think everyone had great ideas but once we started to discuss details, we quickly realized that the scope/requirements of the project would require way more than 1 quarter to implement (and likely an entire team of engineers).  Eventually we all agreed to commit to a list of 5 projects that were provided by the instructors and we were assigned the “Help Save Craigslist” project.  I was really happy with this outcome because I knew this project utilized a lot of the knowledge we had learned in web development, software engineering, and databases.  However, it still left room for us to learn more through developing a cross-platform app as a team, implementing user authentication, and utilizing Amazon for backend services.

This week, my group submitted our Team Standards document which lays out…you guessed it, the standards to which we will hold ourselves accountable.  More specifically, we set our project goals, communication expectations, set up a repo, and decided on using Jira for project management.  The next step in the process will be quite a bit more involved as we have to put together a project plan.

Putting together this project plan is quite daunting.  First, we must decide which languages and libraries we will be using.  For the front end, we’ve agreed that Flutter is the way to go because we all have experience with it and it is cross-platform.  At this point, we have not yet laid out the backend and have had little discussion on it.  At a minimum, I know that we will need to implement a RESTful API that allows for CRUD operations on user accounts and a user’s craigslist posts.  Additionally, we will need to incorporate OAuth for user authentication which could be challenging.  Finally, we will need to utilize Amazon S3 for image storage.  Wow – that’s a lot‼

Stay tuned for next week when I discuss how our project planning went!