We have created an app called Art Badge. The app allows users to find emergency food. We are building Hope as our Tech for Better Project for Founders & Coders FAC26.
Contributors Laura Keating, Niete Ratilal, Dominic Simpson, Gal K Jones
A web app that allows users to 'collect' and rate artworks they've seen in-person. Users can upload WHERE they've seen the artwork, RATE that experience of seeing the artwork, and BUILD a personal database on what they've seen for others to compare.
Seeing artworks digitally rarely compares to the experience of seeing them in context and person. Your experiences of artworks may change depending on exhibition-context, location, or simply down to 'real-life expectations'.
The aim is to get more people to see more artwork, and to encourage them to share their experiences of seeing art in-person.
We are not building a React Native app, an online database of art works, a general social network app and we're not building a site for galleries to advetise new exhibitions.
We conducted user research and usability testing. Our users gave us valuable feedback which helped us refine our initial concept. In some instances that meant intergrating new features which we hadn't considered before and in other instances removing features that we had initialy thought essential.
Based on user research from Design Week we created the user stories. We then created a Kanban board on GitHub to track our progress. We used the Kanban board to create a sprint plan for each week of the project. For our first sprint we prioritised a working product skeleton and setting up our testing library.
For our second sprint we will prioritise the user stories that would allow users to sign-up(sign-in & sign-out) to upload reviews of artworks and allow users to view other users' reviews of artworks.
Our tech stack includes:
- React
- Next.js
- Supabase for authentication (& database)
- Cypress for testing
- Airtable(? for database)
We conducted user research and usability testing. Our users gave us valuable feedback which helped us refine our initial concept.
Some valuable feedback included:
- simplify routes meaning removing the number of clicks needed to complete a user storey
- adding more quick links to the navbar.
- changing scrolling on feed to up/down rather than left/right
- Making the rating process more interactive/fun
In some instances that meant intergrating new features which we hadn't considered before and in other instances removing features that we had initialy thought essential.
Some new features included:
- Search option would be useful to look for specific art, artist, location
- creating a sense of achievement at end of photo upload
- A social share button that allows you to share your work or badges with your friends
- A ranking list of the number of galleries, posts etc to help encourage people to post more
We will ensure our project is accessible to as many users as possible by:
- ensuring our app is responsive
- using lighthouse feature to check accessibility
- using a colour contrast checker to ensure our colour scheme is accessible
- using semantic HTML to ensure our app is accessible to screen readers
Clear communication when creating Kanban board made us more effective at meeting tasks and completing them, timeboxing tasks enabled us to laser focus and not fall down rabbit holes, pair programming ment we could rely on one another when hitting challenges.
Ask for help earlier rather then struggle by ourselves and make best use of mentors and help and soloutions. Read documentation more thourougly before starting work rather than being put off by it's dense and sometimes messy nature.
The homepage received mixed feedback regarding the visibility of certain features such as the question mark and 'Explore' button. The 'Reflect' wording was also found to be confusing. Users requested a direct upload option and a clearer distinction between other users' uploads and their own. The navigation bar's address book icon was unclear, and a friends list was requested. The art card number was unclear, and users suggested using a star rating system. The form could benefit from text instructions, fewer steps, and a sense of achievement at the end. New features requested include a news feed, gallery deals, top-rated photos, and a ranking list. Users also requested icons instead of wording and social share buttons. The app's contrast and colors need to be improved.
Explain the roles and responsibilities of all people working within the software development lifecycle, and how they relate to the project (K2)
Outline how teams work effectively to produce software and how to contribute appropriately (K6) Compare and contrast the requirements of a software development team, and how they would ensure that each member (including themselves) were able to make a contribution (K6)
- We started by building the first iteration of a clickable figma protoype, which we took to users for their feedback. This not only allowed us to take on board features they would like to have implemented but also gave us a chance to see how they navigate through the website and what elements drew their attention the most.
Using this as a starting point and being selective with the user feedback we took on board. We continued to refine the clickabe figma prototype to the point where it was simplified enough to go to the build stage. We also kept testing the user journey through the app by using the prototype to see how navigating between pages would work. To solidify our findings we also got various members of our family and friends to test the prototype to see if they ahd additional feedback about navigation through the app.
We decided to explore using Supabase as our back-end, rather than sticking with SQLite, which is what we have all worked on previously. This meant getting used to how Supabase works. We considered using React Native at the start, but abandoned this due to time constraints, as with employing Netlify for our database.
We used both server-rendering and client-rendering on this project. It was a full-stack, according with the use of Next.JS.
We used Supabase relational databases.
We used Vercel, a platform-as-a-service, for deployment.
We originally focused on the Front end first because we wanted there to be a base 'skeleton' to work from and be confident that you could navigate between the pages needed for the project.
For this project there was no need for a technical specification as this product was not being developed for a product owner.
Create logical and maintainable code to deliver project outcomes, explaining their choice of approach. (S1)
Outline and apply the rationale and use of algorithms, logic and data structures. (K9, S16)
Apply structured techniques to problem solving to identify and resolve issues and debug basic flaws in code (S7)
- We used Cypress end-to-end testing to verify that our project functions correctly.
Identify and create test scenarios which satisfy the project specification (S6)
- We created two general tests replicating a user journey which takes them through our website, using Cypress Testing.
The first tested our Navigation Bar component, which is prominent throughout our site, and allows the user to navigate the app via icons.
In order to make the Cypress Testing work, we added
data-cy="[icon function]"
props to the original NavBar component, which the file in Cypress Testing could then target. The second test file verifies that the sign-in functionality is working correctly, including being able to validate any email and password passed in. This was only possible via adding the following data object in thetestData.json
file, in thefixtures
sub-folder inside thecypress
root folder. If this data object hadn't been added, each email and password would have to be hard-coded in.
{
"email": "[email protected]",
"password": "password"
}
- Although not 'bugs' as such, there were conflicts in the package-lock.json file whenever we pulled down from the remote
main
branch to the localcypresstesting
branch, so as to have an up-to-date version of what was in themain
. This is because themain
branch had a lot of Supabase packages, as a result of downloading and installing Supabase, which had not featured in thecypresstesting
branch. Meanwhile, themain
branch did not have any Cypress Testing packages, but thecypresstesting
branch did, as a result of downloading and installing Cypress Testing. The two appeared to clash, though Git allowed a combination. Initially, we dealt with the conflicts by indeed accepting a combination of both packages in the package-lock.json file of thecypresstesting
branch, but just befeore merging what was in thecypresstesting
branch tomain
, we deliberately deleted the package-lock.json file in thecypresstesting
. This ensured thatt there was no chance of 'contagion' from the package-lock.json files in thecypresstesting
branch affecting themain
branch, which could make the app not work. Then, once we had merged to main, we then did annpm install
into the Cypress testing, to get the package-lock.json back.
Analyse unit testing results and review the outcomes, correcting errors. (S4)
E2E (end-to-end) unit testing results are of great help to identify and solve the issues. Cypress Testing allows both e2e testing and component testing; the former tests all elements and components on a page, while the latter can iteratively test an individual component on a page, in isolation from everything else on that page. In the limited time that we had, we did not have a chance to try out component testing, only e2e testing.
Review and justify their contribution to building, managing and deploying code into the relevant environment in accordance with the project specification (S10)
` Establishes a logical thinking approach to areas of work which require valid reasoning and/or justified decision making (B2)
Describes how they have maintained a productive, professional and secure working environment throughout the project activity (B3) `
Please follow this link to our deployed site
This is a Next.js project bootstrapped with create-next-app
.
Please clone
this repo to your local machine
Please run npm install
to install all dependencies
Please run npm run dev
to run the app
Open http://localhost:3000 with your browser to see the result.
React - JavaScript library
Next.JS - Framework
VsCode - The code editor used
Vercel - The deployment platform used
We used Miro and Figma to record our user research and usability testing.