πΌ Briefings
- A Set
- All Eyes On Me
- Appanage
- Avanart
- Badger Badger
- Careless Whisper
- Clarissa Explains It All_
- Deja Review
- Deskeando
- Development Planner
- Ding! Next!
- Energise!
- Glossary
- Goal!
- Good PR
- Hack Around the Clock
- How to Make A Class
- Hub Planner
- Impact
- In a Class of Our Own
- Jobs From The Boards
- Knowledge Checklist
- Like Sands Through The Hourglass
- Logistical Lunch
- Love Me Tender
- Project Bolan
- Q&A Site
- QR Code Scanner
- Quiz app
- Radio Free YF
- Read Me Hire Me
- Recommendation Tracker
- STAR
- Scout Activity Scheduler
- Shared Bookmarks
- Slack dashboard
- Space Aliens
- Study Buddies
- TOOT
- This App Ointment
- Tick Tock
- Volunteer Schedule Calendar
- We are here
- What Rubbish
A Set π
A Set
Business problem
At CodeYourFuture, trainees build many front ends, sample websites, and
layouts as we learn web focused software development.
We use stock imagery sites, like Pexels, Unsplash, Pixabay, and other
royalty free stock image sites, to find photographs, icons,
illustrations, and other graphic assets.
But we also create lots of assets and we don’t have a way to share them
with other members of our organisation.
How can trainees discover and use these assets in an organised way?
Proposed functionality
User accounts
A way to upload assets
How do we make sure we have the rights to these assets?
Should anyone be allowed to upload?
A way to discover assets
Can assets be described with keywords or tags?
Should they be organised into categories or folders?
What sort of categories? Does image size matter? Type?
A way to use assets
Can we provide an API as we know trainees will be building lots
of front ends?Do we need bandwidth limits?
How do we protect our images so they are not used by other
people?
These assets should be stored in a PostGreSQL database and displayed by
a React front end.
Users and roles
As a trainee, I want to quickly grab images and assets that represent me
and my community.
As a mentor, I want to quickly grab images and assets that represent me
and my community.
As a mentor, I want a go-to place to pull assets from to brand my CYF
projects and tutorials instead of making them myself every time.
As a staff member, I want everyone to use assets that we have the rights
to use.
Stretch goals
User collections
- A user can collect assets into a themed collection they can
share with others
- A user can collect assets into a themed collection they can
On the fly API
- Collections are also available as JSON so users can consume the
images in their own application.
- Collections are also available as JSON so users can consume the
All Eyes On Me π
All Eyes On Me (DevOps, QE)
Business problem
At Code Your Future, trainees open pull requests to coursework repo
every week. Mentors work really hard to review PRs when they can, but a
lot of time is wasted on getting the basics right: PR message filled in,
acceptance criteria met, linting enabled, that often mentors run out of
time before they can get to more substantive commentary. Trainees don't
get as much feedback as they really need.
How can trainees get automated feedback on the basics?
Proposed functionality
A way to define basic PR quality standards
- How will you set these? There are some notes in this briefing on
typical mistakes CYF trainees make on every repo..
- How will you set these? There are some notes in this briefing on
A way to test each PR
- Github Actions can be run on PR. What existing automated testing
exists in the repositories and how are they different across
modules?
- Github Actions can be run on PR. What existing automated testing
A way to reject each PR
- We want to know which PRs are ready for human review, so how
will you reject PRs that need more work before they can be
looked at?
- We want to know which PRs are ready for human review, so how
A way to share the standards
- Actions can be published to a marketplace or stored at an org
level. What will you choose?
- Actions can be published to a marketplace or stored at an org
Your solution/s should be available to everyone at CYF and be modifiable
by mentors.
Users and roles
As a trainee at Code Your Future, I want help with making my PRs meet
professional standards.
As a mentor at CYF, I want to make sure every trainee gets some
feedback so they become the best they can be.
As a module lead, I want to get automated reports of trainee PR quality
across a whole module or all of CYF (but this is a stretch goal)
What else do users want? How will you find out? Some user research may
be needed. Remember: Do the simplest thing that could possibly
work.
Stretch goals
Reporting
- Automated and aggregated reporting to show us patterns over time
Things to consider
Here are all the repos trainees open PRs to
https://github.com/CodeYourFuture/Table-of-Contents
There are existing tests running on some repos at CYF. Can your solution
work with those tests? Make sure you don't disable existing, working
solutions.
One approach to testing PRs is to write all the coursework answers in a
file and check the PR code for them. Why is this not desirable? Another
approach is to fix the errors for the contributor. Why is this not
desirable? (Remember, at CYF the goal is to learn.)
Errors common to all CYF trainees in all weeks
Terrible communication
A single giant commit with no descriptive messages
PR message template not completed and nothing explained to or asked
of reviewerPR not titled as asked but something like "final" or "my work"
Junk changes
Junk files in the PR from using git add . (node modules, DStore,
etc)Old work from previous weeks in the PR
Formatting - not having Prettier installed
Loads of commented out code left in the files
Empty PR
- There's basically nothing in the PR but it's not opened as draft
Appanage π
Appanage
Business problem
At Code Your Future, we build loads and loads of team projects. We
invent products, build apps and solve problems together. We use many
products built by CYFers: the
Dashboard,
Classplanner,
the Curricula,
Signposts,
Rainbird, and many more were all built in-house and some as "final"
projects.
We have a great time and learn a lot, but good work is often lost
because nobody maintains the product after the build is done. We still
need a working attendance system, even though we've built several, and
everyone wants one.
It should go like this:
π‘Idea β‘ π§ͺCYF Labs β‘ πCYF Products
Experimental products implicitly belong to CYF Labs. Once they have been
trialled and proven, they can be proposed to CYF Products, and if
there's a team and a solid use case, they will be accepted.
But most CYFers don't know this. So, how can CYF volunteers discover
and adopt products CYF needs?
Proposed functionality
A way to produce listings of available products
What schema will you use or
define to describe available repositories?What information do CYFers need to understand how to adopt a
build?
A way to organise participation
How will people sign up to adopt a build?
All these products should be Open Source; how will you also
open up contributions from the broader FOSS community?How will you empower CYFers to support specific products they
want?
What is the simplest thing that can possibly work?
These product listings should be stored in a database and displayed by a
front end which scores 100 for Accessibility on Lighthouse. You should
produce a public unauthenticated API.
Users and roles
As a trainee, I want to develop my skills to help me get on to a CYF
Products team when I'm ready
As a developer, I want to sign up to build things for real users to
keep me motivated in my coding
As a mentor, I want to scan open listings and get a sense of the
current builds and what I can help with
As a staff member, I want everyone to feel empowered to participate
in the universe of CYF Products so I don't personally die of exhaustion
trying to organise it all
Stretch goals
Slack feed
- Should new products be posted to Slack? Will you create a
webhook?
- Should new products be posted to Slack? Will you create a
Product space similarity vector
- There are often multiple takes on the same problem. Can you
group products by similarity?
- There are often multiple takes on the same problem. Can you
Things to consider:
Why aren't products adopted? There are many reasons, and not all of
them can be solved. What happens in between the build and take-up?
Understanding this gap will help you build something that can bridge it.
Is it desirable for every product to be adopted? Why or why not?
How can the Change Board help you?
https://github.com/CodeYourFuture/Changes
Useful links
Avanart π
Avanart (FE, UX)
Business problem
At Code Your Future, we interact on many different platforms: GitHub,
LinkedIn, Slack, Codewars, and more. We all choose a single, consistent,
avatar, so we can recognise each other in all these different contexts.
But not everybody can share a picture of themselves online in our
community, so many people use
Robohash to generate a unique
robot avatar from their name.
We want our own CYF-flavoured robohash!
Proposed functionality
A way to generate avatars
- Robohash is open source
https://github.com/e1ven/Robohash
- Robohash is open source
A way to search avatars?
- How will full-text search work on your product? Will you build
it yourself or use services like Algolia or Lunr? What are the
advantages and disadvantages of these?
- How will full-text search work on your product? Will you build
A way to share avatars
These avatars should be generated and displayed by a front end which
scores 100 for Accessibility on Lighthouse. You can choose the framework
or build in native web components.
Users and roles
As a trainee at Code Your Future, I want to get a personal avatar so
everyone can recognise me
As a mentor, I want a CYF-branded avatar system so I can easily
recognise CYFers online and say hi
What else do users want? How will you find out? Some user research may
be needed.
Stretch goals
Regional avatars
- In North West, the different cities have different symbols:
Manchester are bees, Leeds are owls, Liverpool are liver birds
(cormorants), and Sheffield are smiths (Thor and Vulcan). Can
you find a way to create regional avatars that incorporate these
symbols? Can Boring
Avatars help you?
- In North West, the different cities have different symbols:
Lighthouse CI
Can you integrate Lighthouse testing into your deployment workflow?
Who will define the Github action? How will you decide what
budget
to set?
Gravatar Integration
- Can you design a user flow to
https://en.gravatar.com/
to share the avatar on many services at once?
- Can you design a user flow to
Important Note to Developers: This project could be highly
challenging or could be a fairly simple implementation of an existing
library. The real skill here is to start with the simplest thing that
could possibly work.
If the groundwork is solid, this project could be adopted by CYF Labs,
so get the fundamentals right first.
height=“1.2083333333333333in”}
height=“1.2083333333333333in”}(current NW avatars for inspiration)
Badger Badger π
Badger Badger (DevOps)
𦑠𦑠𦑠π
Business problem
At Code Your Future we have a bunch of great Open Source products, but
they're not all in the greatest shape they could be. To really shine, our FOSS repos should meet the highest standards of https://www.bestpractices.dev. But to do this, we need a team of developers to understand the
criteria, plan the changes, drive the adoption, and support all technical contributors to meet the new standards.
This highly challenging project is only suitable for advanced trainees or grads doing a specialisation track.
Proposed functionality
At least one CYF FOSS project should meet the requirements for a passing level Badge https://www.bestpractices.dev/en/criteria/0
Users and roles
As a FOSS maintainer I want my project to be well-run and of good quality
As a CYF organiser, I want to attract talented developers to volunteer with us
As a CYF trainee, grad, or volunteer I want to contribute to impressive codebases and raise my profile
As a CYF DevOps track trainee, I want to gain practical experience in creating a culture of excellence in an organisation
As the Director of Education, I want to share our work and have properly represent the talents and achievements of our community
Likely challenges
There are over 600 repos in CYF, and you can’t do them all. I suggest you start small. Do the simplest thing that could possibly work.
Stretch goals
Silver, or Gold!
Careless Whisper π
Careless Whisper
Business problem
At Code Your Future, mentors and trainees hold many study sessions.
Often people record these sessions, which is very helpful.
But not everybody can learn or absorb from video teaching. Some people
really need a transcript. (Others desperately need a summary. )
How can trainees use
Whisper to transcribe
study sessions? How can they discover and browse those transcripts in an
organised way? And could they even summarise those texts? How?! What is
the simplest thing that could possibly work?
Proposed functionality
A way to use Whisper
How will you teach users to do this? Will you write a
tutorial page? Embed a video? Your users are all developers;
how does this affect your decision?Are there free online services users can extract their
transcripts with?
A way to upload transcripts
A way to search transcripts
- How will full-text search work on your product? Will you build
it yourself or use services like Algolia or Lunr? What are the
advantages and disadvantages of these?
- How will full-text search work on your product? Will you build
A way to browse transcripts
What metadata will users need? A link to the original video?
A link to the module on the syllabus? What about repos on
Github? Cohort name? Date? Keywords? Summaries?How will users find the most useful transcripts? A voting
system? Or what about most downloaded or most returned-to?
These transcripts and summaries should be stored in a PostGreSQL
database and displayed by a React front end which scores 100 for
Accessibility on Lighthouse.
Users and roles
As a trainee at Code Your Future, I want to get targeted mentorship on
the coursework I am completing.
As a trainee who reads better than they hear, I want transcripts of
everything.
As a trainee who has four kids and two jobs, I want a summary because I
don’t have two hours to watch a video.
As a mentor at CYF, I want as many trainees as possible to be able to
access the study sessions I run.
What else do users want? How will you find out? Some user research may
be needed.
Stretch goals
Video upload
- For teams with a Systems track developer, can you build A/V
upload and process with Whisper in the cloud? What open
source
examples
exist that you can use to help you?
- For teams with a Systems track developer, can you build A/V
Lighthouse CI
Can you integrate Lighthouse testing into your deployment workflow?
Who will define the Github action? How will you decide what
budget
to set?
- Summarise AI
You’ve taught the community to transcribe using one AI model. Can you
teach them to use a summarise model? Which of the 700+ public
models
could you use? Teams with a PM, Product Owner, and Tech Lead should
workshop and roadmap this feature, even if you don’t build it.
Important Note to Developers: This project could be highly
challenging or could be a fairly simple text search and filter view. The
real skill here is to start with the simplest thing that could
possibly work.
If the groundwork is solid, this project could be adopted by CYF Labs,
so get the fundamentals right first.
Clarissa Explains It All_ π
Clarissa Explains It All
Business problem
At Code Your Future, Sally explains things. She actually cannot be
stopped.
Of course we all have Google and can look things up ourselves. But in
programming, for every problem, there are many right answers. What
CYFers want to know is: which right answer have we agreed to use?
In collaborative software development, the most important thing is that
everybody agrees on the rules of the road. Much like traffic laws, it’s
not that driving on the left or right is better or worse, it’s that
everybody must agree or we will drive into each other.
How can developers build a knowledge base of answers?
Proposed functionality
A way to ask questions
- What interface will you build to help the user interact with the
model? Do the simplest thing that could possibly work.
- What interface will you build to help the user interact with the
A way to rate answers
You’ll want to improve your model by flagging bad answers.
Who decides bad answers? Do admins and users have different
levels of authority here?
The application should store data and display an interface which scores
100 for Accessibility on Lighthouse.
Users and roles
As a trainee at Code Your Future, I want to find out simple quick
answers to my questions without reading a zillion docs.
As a mentor, I want to improve processes without creating a burden for
others or a constant backlog of outdated docs..
What else do users want? How will you find out? Some user research may
be needed.
Your CYF model will be supplied as a hosted model on huggingface but
please give notice so CYF can prepare this for you.
Stretch goals
- Fine tune
Can you create a way to update information by fine tuning with new
facts?
Slack bot
- Can you create a Slack bot to bring the question and answer
interface into Slack?
- Can you create a Slack bot to bring the question and answer
Lighthouse CI
Can you integrate Lighthouse testing into your deployment workflow?
Who will define the Github action? How will you decide what
budget
to set?
[Note: this challenging project should only be attempted by a strong
group of developers who have a tech lead familiar with machine
learning.]{.mark}
Deja Review π
Deja Review
Business problem
At Code Your Future, we like to use a learning technique called spaced
repetition.
In fact it is set as prep work several
times
during
the
course.
The technique involves reviewing a topic over increasing time gaps (e.g.
after one week, one month, three months, six months, one year).
What is the simplest thing that could possibly work?
Proposed functionality
A trainee can add the name of a topic and the date on which they
first learned itThe system then calculates the dates on which they should review
The computed dates could be stored in the browser and displayed when
the trainee revisits the website
Users and roles
As a trainee, I want to easily calculate the dates when I should be
reviewing a newly learned topic.
As a trainee, I want to know which topics I should be reviewing so
that I can plan it.
Stretch goals
- Integrate with Google Calendar / iCal / Outlook to allow future
review dates to be added my calendar and notified about them
Things to consider
Leaning into browser storage seems like a good way to avoid building an
auth system (which is a difficult challenge of its own).
Deskeando π
Deskeando
Business problem
Who will work where, and when?
At HaveALook Multicorp, there are 50 desks in the office, but no way of
organising who will work where. People may work alone, in pairs, or
in larger teams, and these groupings change all the time. Sometimes
there are Covid restrictions on how many people can be in the office and
those change often too.
They need an application to manage this problem, a way to book desks in
advance so everyone can be sure they have space to work.
Proposed functionality
A user account for each office worker.
A way to see what desks are available
A way to navigate a calendar of availability.
A way to see the features of different desks.
A way to book a desk for yourself.
A way to book desks for others in your team.
A reminder of an upcoming booking
A way to cancel a booking.
The database of bookings should be stored in a PostGreSQL database and
displayed by a React front end.
Users and roles
There are developed personas for this project:
https://www.figma.com/file/4bit1t0X7VZB7XFCysGIhV/CYF-Project-Team-7?node-id=0%3A1
Please develop your user stories based on these.
Challenges
You will need to integrate a visual map - probably in SVG. You will have
to make sure your SVG is accessible by keyboard and screenreader. How
will you test this?
Most users will access the booking application on their phone, so your
design should be “mobile first”.. How will you make the design flexible
and flowing so it also works on desktop?
Stretch goals
SMS notification
- A user can cancel a booking directly from a reminder text
User Testing
- Recruit a group of users and run UX testing
Further resources
Draft of proposed Featureset
Main screen (X week view)
show all bookings for upcoming X week time period
- As an employee I would like to see all bookings for the
upcoming time period so that I can choose my days to book with
maximum information
- As an employee I would like to see all bookings for the
show number of available desks for each day
- As an employee who makes bookings for my team I would like to
know for each day how many desks are available so I
immediately avoid days with too few availabilities
- As an employee who makes bookings for my team I would like to
show bookings for no specific desk
- As an employee I would like my booking to be visible so that
other employees can know I’m in and choose to come in on the
same day so we can get lunch
- As an employee I would like my booking to be visible so that
show bookings for specific desks clustered in a way that makes taken
and empty clusters visibleAs an employee who makes bookings for my team I would like to
know for each day whether there seem to be any clusters
available so that I immediately avoid days with no desk
clusters availableAs an employee who makes bookings for my team I would like to
have visual confirmation that my booking is for a cluster so I
know that I didn’t make any mistakes
options to navigate to future and past
Make booking for day
- As an employee making a booking I would like to select a date
and get taken to a booking screen with reasonable defaults so
that I can click ok and move on with my life
- As an employee making a booking I would like to select a date
Make booking for day/desk?
Cancel booking for day/person
Edit booking
Booking screen view
Select date
Date is preselected
Date can be changed
Date recurrence can be selected
Date range can be selected
Enter name
Single name is by default the logged in name (no login to start)
Names have a dropdown/autocomplete of known employees
Until we have logged in employees (not in the first increments),
assume we have a pre-populated table of of employees from which
names of people being booked will be logged in- Once we have login, can figure out what we do with
not-yet-registered employees (or not-ever-going-to-be
employees)
- Once we have login, can figure out what we do with
Don’t care where I sit
- By default
Choose morning only/afternoon only
- by default don’t need to do either
Floor plan appears and can select desk (note: developers should ask
questions about this)- Floor plan shows desks that are already booked
Confirm button
Notifications
?
View big floor plan
?
Floorplan
πΌοΈ{width=“6.5in” height=“6.791666666666667in”}
Development Planner π
Development Planner
Business problem
At CodeYourFuture, we work through a defined syllabus and our coursework
is set by teachers and subject matter experts.
After we graduate, we need to take control of our professional
development and plan our own learning schedule.
Proposed functionality
The app should have user accounts and all plans should default to
private
Users can invite feedback on their private plans with a share link
Goals can be scheduled and tasks prompted by a notification system
All data should be stored in a database and be accessed by API
Users and roles
[As a graduate, I want to create a professional development plan with
defined and scheduled SMART goals.]{.mark}
[As a job applicant, I want to create a role focused development plan
to prepare for a specific job opportunity.]{.mark}
[As a mentor, I want to be able to give feedback based on my
professional expertise.]{.mark}
Likely challenges
Be careful how you structure your data as this could get confusing
quicklyHow will you send out notifications? With a mailer, or push
notifications?How will you authenticate? Can you use Github? Should you use
Google?
Existing Systems
Stretch goals
Allow role plans to be published and remixed after they have been
developedAs a graduate, I want to share the effective development plan
that helped me get a jobAs a mentor, I want to improve a template development plan in my
specialismAs an applicant, I want a framework to begin my own plan
User Research
Speak to your classmates about what features they’d like to use.
Select a sensible feature and build it.Speak to your teachers and mentors to see what features they’d
like to use in the app. Select a sensible feature and build it.
Ding! Next! π
Ding! Next! (DX/tooling)
Business problem
At Code Your Future, we run sessions and workshops online with lots of
participants. These workshops usually involve timed segments with
activities, discussion, and presentations. But it can be hard to keep to
time when everyone is so interesting and smart (such a problem for us!)
How can we run our calls with discipline and timeliness so we can get
everything we need to do, done?
Proposed functionality
Agenda Parsing
The extension will read the agenda written in the Google Calendar
description and parse the items and timestamps.
Automated Meeting Chair
The chair could sound a buzzer when the timestamp for the next agenda
item is reached.
It should automatically post the next agenda item in the Google Meet
chat window.
Technology Stack
Frontend: JavaScript for the browser extension
Backend: Google Calendar API for fetching event data, Google
Meet API for interacting with the meetingDatabase: None required as it operates in real-time and doesn’t
store data
Users and roles
As a meeting organiser, I want to ensure that the meeting follows the
planned agenda so that it is more efficient.
As a meeting participant, I want to know what each segment of the
meeting is about and when it will happen to stay engaged and contribute
effectively.
What else do users want? How will you find out? Some user research may
be needed. Remember: Do the simplest thing that could possibly
work.
Things to consider
Likely Challenges
Synchronisation between Google Calendar and Google Meet.
Handling various time zones and daylight saving changes.
Stretch Goals
Voice Announcements: The extension could also make voice
announcements for each agenda item.
Customisable Alerts: Allow users to customise the alert sound and
message.
Development Phases
Feasibility Study: Research Google Calendar and Meet APIs to ensure
the project is technically feasible.
MVP Development: Build a basic version of the extension that can
read the agenda and sound a buzzer.
User Testing: Conduct tests with CYF staff and volunteers to gather
feedback.
Iterative Improvement: Implement additional features based on user
feedback and testing.
Deployment: Make the extension publicly available after thorough
testing.
ξ°::agenda
10:00 agenda item eg description of activity
10:15 description of next agenda item
ξ°.
Energise! π
title: “[]{#_nn86dzvod7qx .anchor}Energise!”
Business problem
At CodeYourFuture, we run lots and lots of meetings, often with people
who don’t know each other well or at all. We begin our meetings with an
energiser - a game to get the group together. But because we have so
many meetings, it can get hard to think of all these energisers and it’s
hard to know which are good.
Proposed functionality
The app should present an energiser from a database of energisers
Energisers can be chosen by name, randomly selected, or sorted by some
metric
Users can vote on the energiser according to some metrics they find
useful (fun/quick/ideal number of participants etc)
All data should be stored in a database and be accessed by API
Users and roles
As a host I want to pull up an energiser suitable for my meeting and
have a good description of how to run it
As an attendee, I want to upvote energisers I like and downvote the
ones I found a bit rubbish
As a creator, I want to upload my energisers in a simple structured
way
Likely challenges
- Be careful how you structure your data as this could get confusing
quickly
Stretch goals
Create a slackbot
- As a host I want to to run some energisers (eg voting or
answers) on a slack post that is posted automatically by the app
- As a host I want to to run some energisers (eg voting or
User Research
Speak to your classmates about what features they’d like to use.
Select a sensible feature and build it.Speak to your teachers and mentors to see what features they’d
like to use in the app. Select a sensible feature and build it.
Dark mode
- As any kind of user, I would like to access dark mode
Host a game (mega stretch)
As any kind of user, I’d like to play simple games directly in
the Energise app.
Glossary π
Glossary
Business problem
We introduce a lot of new concepts and technical “nomenclature” to
students during the CYF course. It can be hard to keep track of all of
the different terms that get used, sometimes with different meanings in
different contexts. You can search for a word within the syllabus, but
the output isn’t formatted and it can be hard to figure out which
reference to that word will actually give a good definition.
Proposed functionality
A solution would provide an easy-to-use way to search for a technical
term and get a short definition, along with links to additional
resources (e.g. appropriate section in the syllabus, MDN, …) and
related terms.
Users and roles
The primary users will be students looking for a definition for a
specific term. There will also be students and mentors adding content,
either new terms or new/updated material for existing terms. There may
also be some kind of moderation/administrative role (see below).
Likely challenges
How can we moderate and review the definitions as they’re added, to
ensure that they’re high quality and easily understood by students? How
do we handle common misspellings, or searching for things by symbols?
There can end up being a lot of data in a system like this, how can we
create a system that scales efficiently to deal with that (e.g. showing
“pages” of data)?
Stretch goals
Slack bot: that people can ask for definitions, and will reply
with a snippet and linkHistory: can we see how the definitions have been changed over
time, and by whom?Syllabus integration: can we get the definition information from
the syllabus somehow?
Goal! π
Goal!
Business problemh
At CodeYourFuture we use daily standups, goal setting, and design
thinking to continuously evaluate our work and plan improvements, and we
want to teach our trainees this habit too. But right now this means we
have a lot of meetings, where ideas get lost, or that we do a lot of
paperwork and repetitive work, writing out all of these processes. We
don’t want to teach our trainees this!
We want to spend around ten minutes each morning creating our
standup, ten minutes each week setting our weekly goals, and ten minutes
each month - etc.
We want to systematically record our work and then programmatically
create each larger time block of goals from the smaller time block:
quarter from month, month from week, week from day.
This is a challenging problem suitable for advanced trainees.
Proposed functionality
A ToDo app with time settings and Slack bot conversational interface.
The app must integrate with Slack as that is where everyone in our
community is every day, but the app should have a GUI (website) as well.
All data should be stored in a database and be accessed by API.
Users and roles
As a user, I want to spend less time recording my goals
As a user, I want to catch things I’ve missed and keep on top of my
tasks
As a user I want to share my work easily
As a leader, I want to see what my team are working on
Likely challenges
- Integrating with Slack means understanding the Slackbot API. Look at
existing standup bots to see how this works.
How will you manage access to the goals?
How will you manage time and navigating by time? Will you integrate
Google Calendar?
Stretch goals
Suggest items in daily standup
- In the Daily Standup conversational interface, suggest goals
from the ’to do’ bucket that are not done.
- In the Daily Standup conversational interface, suggest goals
Mark items as done
- On the web app interface, the user can mark items as done and
assign them to dates even if they were not chosen during the
daily standup.
- On the web app interface, the user can mark items as done and
Create teams
- Create a role of ’team’ and allow users to share goals with
their team. This could include auto-posting to a team channel on
Slack.
- Create a role of ’team’ and allow users to share goals with
Note to Coordinator: This is already a challenging project, but if you
wanted to go further, you could divide this into two teams - one
building the graphical interface and one building the conversational
interface. Managing multiple interfaces with one API is some next
level stuff, so only choose this option if you have an abundance of
very strong performers.
Good PR π
Good PR
Business problem
At Code Your Future, trainees use various tools like GitHub Projects for
issue tracking, Slack for communication, and Google Meet for video
calls. However, there is no centralized platform to visualize everyone'
progress and activity on their final projects.
How can trainees and mentors track project progress, visualize GitHub
activity, and ensure fair contribution from all team members in a
single, purpose-built platform?
What is the simplest thing that could possibly work?
Proposed functionality
Project data integration
- Import project data: Team Name, Person, Role, Project Brief, Slack
#channel, GitHub Username, GitHub Repo, GitHub Project Board,
Deployed App, and Presentation
GitHub activity visualization
Display project progress and team member contributions based on
GitHub activityGenerate graphs to visualize project progress and individual
contributions
Fair contribution tracking
Implement a function to calculate and monitor each team member's
contribution percentage.Show alerts if contributions fall outside the acceptable range,
prompting intervention
Centralized dashboard
- Combine data to provide a comprehensive view of project progress and
team collaboration
These features should be supported by a PostGreSQL database and
displayed by a React front end, which scores 100 for Accessibility on
Lighthouse.
Users and roles
As a trainee, I want to track my contribution to the project and
ensure that the team is working together effectively.
As a mentor, I want to monitor project progress and intervene when
necessary to maintain a fair distribution of contributions among
trainees.
As a project manager, I want to visualize the progress of multiple
projects and identify any issues that require attention.
As a participant, I want to see the progress of teams over time..
Stretch goals
Automated alerts
Send notifications to Slack or email when contributions fall outside
the acceptable rangeCustomizable visualization
Allow users to customize the dashboard, selecting which data and
visualizations are most relevant to their needs
Lighthouse CI
Integrate Lighthouse testing into the deployment workflow
Define GitHub actions and set budgets for Lighthouse scores
Things to consider:
Integrating with existing tools like GitHub requires understanding of
their APIs and data formats. How can you ensure seamless integration
while providing added value through visualization and fair contribution
tracking?
There is already a spreadsheet that tracks this data, and it shows one
way to pull the data you need from GitHub. Can you use this to help you?
[TEMPLATE] Final Project -
Tracker.
The code is in the attached App Script.
Additional APIs and services to explore:
More GitHub APIs for repository, commit, and project board data
Slack API for sending alerts and notifications
[NOTE: a version of this project was built by trainees and adopted by
CYF Products in Q3 2023]{.mark}
Hack Around the Clock π
w
Hack Around the Clock
Business problem
At Code Your Future, we join hackathons and have a lot of fun learning
and building together.
But we also find it hard to coordinate and we miss a lot of great
opportunities.
How can we discover and participate in hackathons in an organised
way?
Proposed functionality
A way to consume listings
How will you consume multiple APIs? Is it better to start with
one feed and then add a second?How will you normalise the data into one standard event listing
with the details a CYFer cares about?What event
schema
already exist?
A way to produce listings
How will you only show events that are still available?
How will your users sort and filter events to only show the ones
that are right for them?
A way to organise participation
How will people sign up for events?
How will you empower CYFers to organise a group to participate
in events?
What is the simplest thing that can possibly work?
These events should be stored in a database and displayed by a front end
which scores 100 for Accessibility on Lighthouse.
Users and roles
As a developer , I want to sign up for fun events to keep me
motivated in my coding
As a mentor, I want to scan open listings and get a sense of the
current opportunities
As a staff member, I want everyone to feel empowered to participate
in the universe of coding events themselves, so I don't personally die
of exhaustion trying to organise it all
Stretch goals
Slack feed
- Should new events post to Slack? Will you create a
webhook?
- Should new events post to Slack? Will you create a
Filtering events
- Can you filter the events to only things CYFers can
realistically participate in? For example, how will you discard
all in-person events in the USA from MLH lists? How will make
sure everything is free?
- Can you filter the events to only things CYFers can
Google Calendar
Can you produce a google calendar of events that we can all subscribe
to?
Conferences
- What about free conferences and meetups? Can your app handle
those too? Should it?
- What about free conferences and meetups? Can your app handle
Things to consider:
Most events are hackathons, but not all. How will you decide what to
tell the user about each event?
There are many more events than anyone can or should participate in? How
will you filter events to things we really want to do?
How do event aggregation APIs get their data? What is web scraping?
Who already organises a lot of events at CYF? Would they be a good
person to advise you on your development?
Useful links
How to Make A Class π
How to make a class (UX/FE)
Business problem
At Code Your Future, setting up a new class involves coordinating
various elements like trainees, volunteers, resources, and more. There
is no fun and intuitive way to understand and visualise what goes into
"baking" a successful class.
βοΈWe like clarity. It's really important to us that everyone
understands what they need to do to start a cohort at CYF.
How can cohort founders explore and experiment with different
conditions to understand their options.
What is the simplest thing that can possibly work?
Proposed functionality
A way to visualise requirements
Create a web-based game using SVG illustrated game pieces.
Central mixing bowl where "ingredients" for a class are poured
in from containers set around the page.A "baking" phase where optional elements like food and
childcare can be added, each having a cost.
A way to experiment with requirements
Dials and buttons could adjust ratios and tempo.
How will you set limits but still encourage autonomy?
This fun web game can be written in React, Web Components, or a
framework of your choosing. You do not need to build a login or a
database. The front end must score 100 for Accessibility and over 80 for
Performance on Lighthouse.
Users and roles
As a prospective CYF organiser, I want to understand what elements
are essential for setting up a new class and how they interact.
As a volunteer or staff, I want to express the complexities involved
in forming a new class in an engaging way.
Stretch goals
Live data feed integration
- Nobody can start a new class if the previous cohort is still
struggling to find work. How will you set a limit by region?
- Nobody can start a new class if the previous cohort is still
Update constraints and ratios
- As CYF evolves and we learn more about success and failure, we
update the constraints. How will you allow administrators to
update the values?
- As CYF evolves and we learn more about success and failure, we
Lighthouse CI
Can you integrate Lighthouse testing into your deployment workflow?
Who will define the Github action? How will you decide what
budget
to set?
Things to consider:
How can the Change Board help you?
https://github.com/CodeYourFuture/Changes
How can the Programme Team help you?
https://github.com/CodeYourFuture/Programme
This is a serious interface challenge. Get as much help as you can from
UX and FE mentors.
More details:
When to launch ITD > Fundamentals >
SDC
—------------------
Notes: πCake Your Future
What is the recipe to make a class?
π§ We need how many trainees
π§ We need how many volunteers
π’ We need a place to meet
π» We need laptops
π We need a syllabus to understand what to do
π§βπ« We need training to understand how to do it
Where do trainees come from? ITD => funnel of ITD applicants and change
the completion rate with a dial?
Where do volunteers come from? => meetups, dashboard signups, graduates
=> what is the retention rate on these inflows?
Where do places to meet come from? Volunteer workplaces, company
donations, local government support, community centres
Where do laptops come from? Donations from companies, personal
donations, donated money to buy them
Where does broadband come from? Donations from companies, personal
donations, donated money to buy them.
Where does training come from? Volunteers and staff donate their
experience. Some staff used to be volunteers!
Where does the syllabus come from? FOSS on Github, sister orgs like HYF,
donations from Udemy and Codility, individual contributors
What extras are most impactful? (the icing on the cake)
π² food
πΆ childcare
π« bus tickets
What makes a class even better? (light the candles)
=> hackathons
=> workshops
=> lightning talks
=> games
Hub Planner π
Hub planner
Business problem
At Code Your Future, volunteers face extra challenges when coordinating remote and hybrid Saturday sessions. In the North West, for example, public transport is not reliable. Trainees could be in Manchester, Leeds or Liverpool. Some trainees may have to attend remotely due to train strikes, cancellations, breakdowns and floods!
Proposed functionality
A way for trainees and volunteers to check travel disruptions in
their regionA way for everyone to register their attendance type
How can volunteers and trainees record their type of attendance?
What sort of data will we need to store?How can trainees provide a reason for their attendance? Is this
useful?What types of attendance are there? Remote, in person…. What
else?
A way to notify facilitators of where everyone will be before
classHow might fellow volunteers or trainees notify others that there
are travel issues in their hub?How will users tell what day everyone is talking about? Will you
use a calendar?
The attendance type data should be stored in a PostGreSQL database and
displayed by a React front end,
Users and roles
Trainees
As a trainee, I want to check for local travel disruption in my region
before a Saturday class
As a trainee, I want to register my type of attendance ahead of a
Saturday class
As a trainee, I want to be able to quickly update my attendance type
ahead of a Saturday class
Volunteers
As a volunteer, I want to check for local travel disruption in my region
ahead of a Saturday class
As a volunteer, I want to register my type of attendance ahead of a
Saturday class
As a volunteer, I want to view the attendance type of all the trainees
and volunteers for a given Saturday class
As a volunteer, I want to be able to quickly update my attendance type.
As a volunteer, I want to be able to automatically sort trainees and
volunteers into breakout groups based on their attendance data according
to some clearly stated criteria, for example:
- Trainees attending a hub in-person, say Leeds, where at least one
volunteer is present won’t need to go into a breakout room.\
- Trainees attending a hub in-person, say Leeds, where no volunteers
are present will need to go into a breakout room.- Trainees attending remotely will need to go into a breakout room
As a volunteer, I want to be able to override any breakout groups that
are generated automatically.
Stretch goals
Pathways
The app can also handle a situation where a group of trainees are on
several pathways and need to go into separate breakout rooms.
Class Planner integration
A previous Final Project built the Class Planner, which volunteers use
to plan classes.
https://classplanner.codeyourfuture.io/
How can the Hub Planner integrate with the Class Planner? Is it useful
to do this? You might need to do some user research and talk to the
Class Planner Product team.
Impact π
Impact (Data)
Business problem
At CodeYourFuture, we use data to understand the impact of everything we
do. We spend a lot of time diving into our data and tracing outcomes,
and we use charts, graphs, and quantified impact statements in our pitch
decks, grant applications, and regulated reporting.
But this is a ton of work; we repeat ourselves a lot, and we don't have
a branded, organised way to explain these insights to others, including
showing our working out and how we came to make these statements.
How can we explore, explain, store and share these
insights in an organised way?
What is the simplest thing that can possibly work?
Proposed functionality
A way to pull anonymised data from multiple sources
We have the live data feed
What other data sources do we use a lot?
A way to interrogate data for the common questions we ask
- Are there existing products we can use for this? What is
simplest?
- Are there existing products we can use for this? What is
A way to visualise data for the common questions we ask
- Are there existing products we can use for this? What is
simplest?
- Are there existing products we can use for this? What is
A way to share impact data
Can we export CYF branded graphs and visuals?
Can we embed impact statements on Google Slides or websites?
This application could be full stack or front end. It is data focused.
The front end must score 100 for Accessibility on Lighthouse.
Users and roles
As a CYF grant writer, I want to make clear, fact-based statements about
our impact..
As a grant maker, I want to see the methodology for impact statements so
I can verify them.
As a CYF data contributor (trainees and alum), I want to know that my
data is being used correctly to support CYF's work and future trainees.
As a CYF member, I want to be able to talk about CYF's work with strong
facts I can find and share easily.
As a regulator, I want to make sure Personally Identifying Information
is not shared and all data is anonymised before store.
Stretch goals
Admin view
- This product uses open data sets. CYF also has some private data
sets, which cannot be connected publicly. What would you need to do
to make this application secure for this data? Is it wise to do
this? What are the implications?
User Research
- Speak to staff about how they use data to help support CYF and what
kinds of impact statements would help them most.
Things to Consider
Don't get overcomplicated. Start with a single data point comparison
between two data sources. Use existing products to help you. Identify
and build the missing piece for this use case.
πΉRAWGraphs
π CYF Data feed is pinned in general : CYF DATA Feed
[LIVE]
Common datasets we compare against:
Here are some examples of CYF use of trainee data
Anonymised and aggregated reporting, which you can see hereCYF
DATA Feed
[LIVE]Here's an example of slides we show to partners:CYF corporate
volunteering
[LIVE]Here's an example of a report prepared for OfstedSelf Assessment
Report (SAR) 26-1-23
[PUBLIC]
In a Class of Our Own π
In A Class of Our Own
Business problem
At Code Your Future, trainee progress is tracked on a trainee tracker
against
milestones
set by the Director of Education. But each trainee at CYF is on their
own personal journey towards employment, and should really set their own
milestones on their own roadmap.
Proposed functionality
A way to define your milestones
- How will you quantify your milestones? The trainee tracker code
is available for you to incorporate as your starting point.
- How will you quantify your milestones? The trainee tracker code
A way to check your milestones
- Course milestone data is harvested from platform APIs (Codewars,
Github, etc) and this code is available to you on request. What
other goals might trainees set?
- Course milestone data is harvested from platform APIs (Codewars,
A way to display your progress over time
- You’ll probably need a user account and some kind of dashboard.
Your solution should be stored in a database and displayed by a front
end which scores 100 for Accessibility on Lighthouse.
Users and roles
As a trainee at Code Your Future, I want to set my own milestones for
the course.
As a trainee at Code Your Future, I want to see and track progress
towards my own milestones, as well as the ones set by the course.
As a mentor at CYF, I want to support each person as an individual
towards their own career goal.
As a Programme Manager, I want to include trainee-chosen milestones in
my evaluation of progress.
As an Education Director, I want to support each person as an individual
towards their own career goal, while being able to get a reasonable
overview
of how our cohorts are doing.
What else do users want? How will you find out? Some user research may
be needed. Remember: Do the simplest thing that could possibly work.
Stretch goals
Public API
- To allow other services to pull the progress data, can you build
a public API. The Attendance Register
project
has this goal; can you share your work?
- To allow other services to pull the progress data, can you build
Lighthouse CI
Can you integrate Lighthouse testing into your deployment workflow?
Who will define the Github action? How will you decide what
budget
to set?
Notes
There is an existing tracker that harvests this data and quantifies it
here
https://docs.google.com/spreadsheets/d/1VoSIXo1M8RYFH8CexyAeDk2KrdxXpY6hDUmS1Ae_WMU/
Jobs From The Boards π
Jobs from the boards
Business problem
At Code Your Future, graduates trawl job boards and gather leads as part
of their Employment Programme. Graduates use Slack channels and calls to
share their leads and progress with applications.
But we also duplicate a lot of effort, and job hunting is exhausting
enough already.
How can trainees discover and apply for jobs in an organised way?
Proposed functionality
A way to consume listings
How will you consume multiple APIs? Is it better to start with
one feed and then add a second?How will you normalise the data into one standard job listing
with the details a CYF grad cares about?What job
schema
already exist?
A way to produce listings
How will you only show jobs that are still available?
How will your users sort and filter jobs to only the show the
ones that are right for them?
A way to analyse jobs
Is it valuable to know which employers have already hired a
CYFer?Is it useful to identify keywords and highlight them in the
listing?What about salary ranges; is this key data for users? How will
you find out?
These jobs should be stored in a PostGreSQL database and displayed by a
React front end which scores 100 for Accessibility on Lighthouse.
Users and roles
As an applicant for junior developer roles, I want to browse and
filter jobs that I have a chance of getting
As a mentor, I want to scan open listings and get a sense of the
current market for my trainees.
As a staff member, I want everyone to share their leads and work
together so we don’t get too broken down by job hunting..
Stretch goals
Slack feed
- Should new listings post to Slack? Will you create a
webhook?
- Should new listings post to Slack? Will you create a
Keyword scanning
- Can you produce a dictionary of important keywords that CYF
applicants would want highlighted? What user research will you
do to identify these words?
- Can you produce a dictionary of important keywords that CYF
Lighthouse CI
Can you integrate Lighthouse testing into your deployment workflow?
Who will define the Github action? How will you decide what
budget
to set?
Things to consider:
There are enterprise solutions to this problem, like Google Cloud
Talent
Solution.
What are the advantages and disadvantages to building your own?
There are many paid job aggregation APIs, but there are also some free
ones. How do these job aggregation APIs get their data? What is web
scraping?
Some free Job Board APIs
Knowledge Checklist π
Knowledge Checklist
Business problem
At CodeYourFuture, our students gain a vast amount of knowledge and
skills that in total, will result in them being able to call themselves
a programmer.
It’s important that we can track a student's progress over the course
to make sure that they are keeping up with the class and developing
their understanding of our material.
Proposed functionality
The website should be able to have a list of skills that students are
expected to achieve. For each item in this list we should be able to
rank the students’ confidence with the skill.
Skills should be separated into categories depending on what they are
about e.g. HTML/CSS, React, Node etc
Students should be able to create an account to track their progress
over the course. These accounts should be publicly accessible on a path
on the website e.g. cyf-knowledge-checklist/august but individual
information cannot be accessed without authentication.
Each student should be attached to a class.
All data should be stored in a database using an API to interface with
it.
Users and roles
As a student, I want to be able to create an account that will hold all
of my knowledge checklist data.
As a student, I want to be able to update and chart my own progress
As a mentor, I want to be able to edit the class learning objectives in
each of the subjects.(this should only be possible before a cohort
starts - see stretch goals)
As a mentor, I want to be able to see an overview of all of the students
in a given class.
Likely challenges
- Be careful how you structure your data as this could get confusing
quickly
Existing Systems
Here is a very simple example of this system created by CodeYourFuture
https://cyf-course-checklist.netlify.app/
The success view on the curriculum aggregates learning objectives into a
checklist.
Stretch goals
Resources & Assessment
If a student says they are not confident in a subject show them
a set of resources to help themIf a student says they are are confident in a subject, direct
them to complete an assessment piece of workAs an admin, I want to be able to edit the resources and
assessment for each topic
User Research
Speak to your classmates about what features they’d like to use.
Select a sensible feature and build it.Speak to your teachers and mentors to see what features they’d
like to use in the app. Select a sensible feature and build it.
Dark mode / toggling modes (accessibility)
As any kind of user, I would like to be able to toggle my
preference to use dark modeIf possible, as a user, I would like other options for the
colours used on the background and text
Prevent editing of learning objectives after a class starts
- As a mentor, I should not be able to edit the list of learning
requirements once a class has started
- As a mentor, I should not be able to edit the list of learning
Like Sands Through The Hourglass π
Like Sands
Business problem
At Code Your Future, we try to save money as much as possible, so we can
do the most with our limited funds. But sometimes it's hard to perceive
the costs of our decisions and allocate our resources wisely.. For
example, if five people spend one hour deciding whether to buy one
software licence, it might actually be cheaper just to buy the software
instead of having the meeting.
How can we better understand the value of our time? How can we help each
other to not waste precious resources that could go towards trainee
expenses or infrastructure improvements.
What is the simplest thing that could possibly work?
Proposed functionality
Poll salaries
Privately poll each meeting attendee for their annual salary
Do not permanently store or visually display this personal information
Calculate cost
Combine the salaries and compute the cost per second of the combined
time of the attendees
Display cost clock
Display a cost per second ticking up in the Google Meet call
Users and roles
As a staff member, I want to visualise the cost of discussing
resource allocation
As a donor, I want to know CYF rigorously examines its own use of
funds
Stretch goals
Can this extension integrate with Google Calendar and project the
cost of proposed future meetings as well?It costs a company much more than the annual salary to employ
someone; can you include those costs as well? Or a rough percentage?Could an attendee also input the cost of the resource being
discussed, if any, so if the cost of the meeting surpasses the cost
of the resource, the attendees are notified?
Things to consider
If there are only two people in the meeting, each party can deduce the
annual salary of the other. Is this a problem? How will you tackle this?
Can CYF provide a blended employee cost per second default value that is
used instead in this scenario?
http://www.expensivemeeting.com/
is a longstanding website that does a basic version of this idea. What
can you learn from it?
Agencies and contractors must calculate their
costs
in this way to understand how much to bid for work. What can you learn
from applications like
Synergist,
and what is "overkill" for your product?
Logistical Lunch π
Logistical Lunch
Business problem
At CodeYourFuture, we are used to meeting on Zoom for every occasion, as
we are living through a global pandemic.
But now we need to adapt to meeting together in person every weekend. We
need to figure out our travel arrangements and, most importantly, what
we will do for lunch!
This project is about systematising the management of the flow of
things and people, according to complex and sometimes competing
requirements: logistics.
Proposed functionality
Phase 1:
Optimal starting time.
Using the group’s starting positions and chosen mode of transport,
evaluate a distance matrix to pick the optimal start time in the
morning.
Phase 2:
Organise lunch
Create an interface to gather and display the answers to, at least,
these questions:
How many people will need lunch today?
Who is in charge of making lunch today?
Who is in charge of buying the ingredients today?
What is the budget?
What are the dietary restrictions that must be considered?
Where is the nearest supermarket?
Users and roles
As a class organiser I want to coordinate the morning start time with
all the trainees.
As a lunch shopper, I want to know what to buy and how much to spend.
As a lunch maker, I want to know what to make and for how many people.
As a lunch eater, I want to make sure that I don’t die from a terrifying
anaphylaxis.
Likely challenges
How will you calculate the distance matrix?
Do you need user accounts to solve these logistical problems?
How will you keep the origin coordinates of individual students a
secret? Do you need to associate identities and origins at all?
Existing Systems
Can you use the Google Maps Distance Matrix
API
or the Distance
Matrix to
calculate the distance matrix?What do you know about the
https://classplanner.codeyourfuture.io/
Stretch goals
Integrate
- As a class organiser, I’d like to access this logistics app from
the Class Planner
- As a class organiser, I’d like to access this logistics app from
Lunch assistant
As a lunch maker, I’d like suggested recipes from a database of
successful class lunches.As a lunch shopper, I’d like a suggested shopping list.
As an organiser, I’d like for the lunch maker and shopper to be
selected on a rota.
- Afternoon break
A substantial stretch feature could extend this product to negotiating
the afternoon break schedule as well. Some starting user stories are
provided to help you think about this feature.
As a Muslim, I need to schedule an afternoon break for prayers.
As a breastfeeding mother, I need to schedule an afternoon break to
feed my baby.
As a disabled person, I need to schedule an afternoon break to manage
my medication.
Love Me Tender π
Love me Tender
Business problem
At Code Your Future, there are various opportunities for contract software development work. However, there is no centralised platform to publish these tenders and allow qualified suppliers to bid on them.
We like fairness and opportunity. It's really important to us that everyone has the same fair chance to bid for contracts.
How can trainees discover and bid for contracts in an organised way?
What is the simplest thing that can possibly work?
Proposed functionality
A way to publish tenders
How can staff easily describe their business problems
What details will be included in a tender listing? Scope, deadline, skills required, etc.
How will you structure fairness into the process?
A way to browse tenders
How will you only show jobs that are still available?
How will your users sort and filter jobs to only show the ones that are right for them?
A way to bid on tenders
How will contractors bid on available tenders? Will you build a UI for them to submit their proposals?
How will you ensure only available tenders are shown? Will you implement a status flag in the database?
These tenders should be stored in a database and displayed by a front end which scores 100 for Accessibility on Lighthouse.
Users and roles
As a CYF staff member, I want to easily publish and review tenders to efficiently match projects with contractors.
As a contractor, I want to find available tenders and have the opportunity to bid for them
As a contractor, I want the tendering process to be useful training for me, even if I don’t win the contract
As a mentor, I want to have an overview of the tenders to provide guidance to aspiring contractors within the CYF community.
Stretch goals
Slack feed
- Should new listings post to Slack? Will you create a
webhook?
- Should new listings post to Slack? Will you create a
Keyword highlighting and filtering
- Can essential skills or technologies be highlighted in the tender UI?
Lighthouse CI
Can you integrate Lighthouse testing into your deployment workflow?
Who will define the Github action? How will you decide what budget to set?
Things to consider:
There are enterprise solutions to this problem. What are the advantages and disadvantages to building your own? There are also many Open Source tendering platforms. What can you learn from them?
How can the Contracts Finder Service
and Find Tender Service help you? Can you make use of their FOSS API?
(Also see V2)
How can the Change Board help you? https://github.com/CodeYourFuture/Changes
CYF would really like to adopt this project, if a build can meet our needs. Consider the Technology Code Of
Practice
to help you understand how to get your project up to a production standard. We want the simplest version we can possibly use.
Project Bolan π
Project Bolan (FE)
Business problem
Using Chrome, if you try to access a website while offline you can play
a game. Alternatively you can access the game by navigating to
chrome://dino in the URL bar. More info can be found on
Wikipedia.
The game is a fun Easter Egg when the user might be frustrated at the lack of internet connection. It may
be a fun thing to add to your apps in the future to add some light relief.
What is the simplest thing that could possibly work?
Proposed functionality
You play a dinosaur who is running to the right of the screen
As you play, various obstacles appear on the right that the dinosaur
must avoid, either by jumping over them (by pressing the Up Arrow or
Space keys) or crouching under them (by pressing the Down Arrow)The dino runs faster (and thus the obstacles also move faster) over
timeA score counts up over time
Users and roles
As a player, I want the dino to move to the right when playing the
game.
As a player, I want randomised obstacles to move to the left when
playing the game.
As a player, I want to control the dino jumping/crouching via the
keyboard.
As a player, I want a score to be recorded.
As a player, I want the dino to speed up over time.
Stretch goals
A high score is recorded for the player
Instead of a dino, make a custom CYF character
Things to consider
When implementing the game, try looking at
requestAnimationFrame.
Q&A Site π
Q&A Site
Business problem
It’s very common for students (and sometimes mentors!) to have technical
issues running their code - errors, unexpected outputs, or refusing to
run entirely. The Technical Question Form (see the β‘οΈ icon in e.g.
#london-class6) has a good structure but asking questions like this in
Slack is difficult for a number of reasons, e.g. it doesn’t handle (and
format) code very well and threads disappear quickly. Stack
Overflow has a very mature UI
for asking code-related questions, but asking there is a big step; it’s
not really designed for beginners and the comments don’t provide enough
space for a complex back-and-forth. We could bridge the gap with a Q&A
system of our own, which would hopefully improve the quality of
questions, both getting better answers now and preparing students for a
better entry to asking on Stack Overflow.
Proposed functionality
The key functionality would be a way for the asker to post and
subsequently edit a question, comprising an explanation of the context
(why the code is being written, e.g. linking to a class or homework),
the expected outcome, the actual outcome and the (HTML, CSS, JS) code. A
question could then have responses: follow-up questions, to give
feedback and clarify what is being asked; and answers.
Users and roles
The primary roles in the system will be people asking questions, and
people responding to them with follow-up questions and answers.
Likely challenges
How can we develop a structured format that encourages clear,
high-quality questions? How do we encourage good feedback and refinement
of questions? How do we manage different types of content (text vs.
code, and different kinds of code for formatting)? There can end up
being a lot of data in a system like this, how can we create a system
that scales efficiently to deal with that (e.g. showing “pages” of
data)?
Stretch goals
Some form of notification for key events (e.g. answer posted) via Slack
or email would mean users didn’t need to keep checking back for
responses. Being able to create a question straight from Slack using the
existing form would be pretty cool! What if you could run the code
examples (for client-side things, Express and Mongo might be tricky…)
right in your browser while looking at the question?
QR Code Scanner π
QR Code Scanner
Business problem
QR codes are a
common sight nowadays, as they can easily integrate the physical world
(such as museums, cafes, restaurants) with the digital world.
Let’s imagine we’re building a website for a museum which wants to allow
museum attendees to scan QR codes next to exhibits to see more
information.
What is the simplest thing that could possibly work?
Proposed functionality
Allow users to take a photo of a QR code and add it to an image
element on the applicationUse the BarcodeDetector
API
to scan the QR codeDisplay the information contained within the QR code
Users and roles
As a museum attendee, I want to learn more information about an
exhibit.
Stretch goals
- Allow the user to directly scan QR codes with their camera (rather
than taking a photo then processing it)
Things to consider
A QR code generator like this
one
may be useful for testing.
Unfortunately, the BarcodeDetection API does not have very good
browser
support yet,
as it is only fully supported by Chrome on Android. You may want to
consider showing a warning message to the user if it is not supported.
Quiz app π
Quiz App
Business problem
With a large group of students it’s difficult to track how everyone is
doing with the material; we move quite quickly through the course at
CYF, and a student can sometimes fall behind without the mentors
realising. We’ve had quizzes at the end of some of the modules, but
these take a lot of effort to prepare and mark, and the earlier we
understand a student’s position the more support we can provide.
We’ve been experimenting with Kahoot! for this in London, running
quizzes at the end of classes to figure out how people are getting along
with the material. However, Kahoot! isn’t
free, it
prioritises being fast (which can put unhelpful pressure on students)
and it would be nice to have a system that we could integrate more
closely with the other tools we’re using.
Proposed functionality
Similar to Kahoot!, the quiz app will allow a lead mentor to prepare
simple quizzes to give throughout the modules (e.g. one before lunch and
one at the end of the day). It will then allow them to present the quiz
to a class and enable the participants to answer the questions.
Users and roles
There’ll be three kinds of user for this: the lead mentor preparing the
quiz; the students (and maybe floating mentors!) taking part in the quiz
on the day; and the other mentors reviewing the results to try to spot
patterns and offer additional support (or suggest improvements to the
course material and teaching) where required.
Likely challenges
This app will probably have lots of different views - on top of the
“preparing quiz” and “reviewing results” views, the on-the-day usage
will have distinct UIs for the participants’ devices (answering the
question), the lead mentor (tracking participation) and the projector
(showing the question). How can we show different kinds of question? How
would e.g. code examples and pictures work out? How can we help the lead
mentor preview their questions, and get them reviewed (so they don’t
make the students go through a quiz with mistakes)? How do we make this
accessible so that any user can take part (e.g. responsive design,
keyboard usage, …)? Can we usefully categorise questions, or set
estimated difficulty, to give more insight into class progress?
Stretch goals
Interactivity: you can build a simple app with a
request/response pattern and polling, but to make the app more
interactive (e.g. scores in real time) you’d have to look into
something like
websocketsAnalysis: initially you could just allow export of the data for
import to Google Sheets for further analysis, but what if there were
tables and charts available directly in the tool?Scoring: a simple version of this app would just store the
participants’ answers, but if you wanted to add a competitive
element you could develop a scoring system.
Radio Free YF π
Radio Free YF
[Note: this challenging project requires significant up front research
on API restrictions]{.mark}
Business problem
At Code Your Future, we like to dance, we like to share our music, and
we like to stream coding music while we work. But we don't have our own
radio station to share and discover music that resonates with the
community.
What is the simplest thing that could possibly work?
Proposed functionality
Spotify integration
A way to pull playlists from multiple Spotifys
How will people submit their playlists? Will the API let you do this
or will you use Slack?Who decides what gets played? Anyone?
Visualisations
A way to display the current song playing
Can you generate a waveform and animate it?
Can you pull the cover from the API and show it?
What about the current 'DJ'? How will you represent the CYFer
playing the track
Memory
Do we need a way to browse the tracks already played?
Can you put 'sets' on a calendar?
Will you make the past tracks searchable? There are restrictions on
storing data in the Spotify Developer Agreement.
These features should be supported by a PostGreSQL database and
displayed by a React front end, which scores 100 for Accessibility on
Lighthouse.
Users and roles
As a CYF musician, I want to share my music
As a CYFer, I want to share my music
As a CYF musician, I want to share my music! π(I think some more
detailed user stories would be a good idea)
Stretch goals
Lighthouse CI
Integrate Lighthouse testing into the deployment workflow
Define GitHub actions and set budgets for Lighthouse scores
Slack bot
Post the current playlist to Slack
Ask /tunes what is playing on CYF Radio
Things to consider:
There is another Spotify API project, which may be approachable if
you're on a short deadline: Team Project: Spotify Playlist
Filterer
There is a cyf music channel. Can you recruit user testers from this
group? What other things would they like from this application?
The Spotify API is free but has a lot of restrictions and is only for
personal or development use. What can you NOT do that you would like to?
This project suggests Spotify, but you can choose your own solution if
Spotify doesn't work for you. Remember to do the simplest thing that
can possibly work.
Read Me Hire Me π
Readme Hireme
Business problem
At Code Your Future, we need to showcase the talents and skills of
graduates who are available for work. Currently, there is no
centralised, up-to-date platform for this. We could ask them to update
one, but our graduates are tired, and very busy coding! So is there a
way to harvest that activity and use it to power a graduate
directory automatically?
What is the simplest thing that could possibly work?
Proposed functionality
GitHub API integrations
A way to pull data from GitHub
Use GitHub Activity API to fetch each graduate's contributions,
projects, and skills.Use GitHub Profile README to extract personal statements, resumes
and LinkedInUse GitHub pinnedItems API (GraphQL) to extract projects and
portfolioHow will you add and remove grads from the platform? Should grads do
it themselves via a GitHub login?
Visualisations
A way to display data
Can you generate graphs to visualise activity?
How will you present each grad's profile?
Search and browse
A way to search and browse for grads
How will you sort up active graduates?
How will you only show people available for work?
These features should be supported by a PostGreSQL database and
displayed by a React front end, which scores 100 for Accessibility on
Lighthouse.
Users and roles
As a graduate, I want to be able to focus on coding great projects
and know my work is discoverable
As a mentor, I want to see at a glance who is active and who is
losing motivation
As a recruiter, I want to see a range of CYF grads at a glance, and
search and filter them too for my needs
As an employer, I want to easily find suitable CYF graduates so that
I can hire skilled developers.
As a mentor, I want to make sure CYF grads spend their time on
things that will genuinely help them get jobs
Stretch goals
Lighthouse CI
Integrate Lighthouse testing into the deployment workflow
Define GitHub actions and set budgets for Lighthouse scores
Things to consider:
This app should look really smooth, because we're presenting ourselves
to recruiters. Can you recruit a UX/UI designer or front end specialist
to polish up your look? Where will you find these people?
Integrating with existing tools like GitHub requires understanding of
their APIs and data formats. How will you test your approach using the
smallest slice of end to end functionality you can first?
There are already multiple small apps and scripts in use at CYF that
pull from various GitHub APIs. Can you use these to help you?
Previously there was a project Team Project Graduate Platform
[RETIRED]
which several teams built, but we never integrated or updated. Make sure
your solution is lightweight, easy to maintain, and does not rely on
manual input of data.
Recommendation Tracker π
Pin the Mood
Business problem
People recommend things (books, TV shows, music, etc). Sometimes we
don't get around to trying them out for a while. We want a website to
track those recommendations, and to help us pick things when we're in
the right mood for them.
User roles
We will make a single-user website, with exactly one expected user:
- Collector - someone who receives recommendations, and wants to log
and track them.
User stories
As a collector, I can save a recommendation, including at least the
following information:What the thing being recommended is
Who made the recommendation
What medium of the recommendation is (e.g. book, TV show, movie,
…)The mood of the recommendation (e.g. upbeat / scary / thoughtful
/ …)- One recommendation may have multiple moods!
As a collector, I can see a list of recommendations that have been
made.As a collector, I can filter the recommendations based on any
combination of:Who made the recommendation
The medium of the recommendation
The mood of the recommendation
Stretch User Stories
Ability to add custom recommendation media (e.g. if someone
recommends an "immersive theatre" event, that can be entered as a
new medium when saving)Ability to add extra moods
Ability to rate recommendations
- Analytics about who makes the best recommendations
Table stakes
Unrelated to any one user story, the following requirements must always
be met:
The website must be deployed somewhere where it's accessible to
anyone with internet access.The website must be fully accessible.
If an error occurs, it must be obvious to the user that something
has gone wrong, and what they should do about it.Any data must be persisted - re-deploying or re-starting the server
must not lose any data.
Suggested implementation plan
High Level
Talk through what functionality should live where.
For all of the user stories you're likely to target:
a. Sketch out some wire-frames to map out the user experience.
i. Wireframes can be as extensive or detailed as you want. It could range from a simple pen paper design to a detailed figma design; whichever suits your needs better. ii. You can always add more detail when you\'re focusing on any one user story.
b. Model the data in database tables.
Make your frontend, backend, and database work both locally and
deployed - you should be able to switch between these just by
setting up a .env file.Choose some user stories to focus on first, and:
a. Write backend features which you can test out with curl/postman.
b. Add frontend features to visualise the data from the backend and
interact with it.c. Deploy everything.
Iterate.
Day by day
Day 1 - Day 2 : Planning phase (no coding if you can resist) -
Might seem long and an overkill but will benefit you at next steps. Key
steps to complete (you pick the order):
Design the DB for your business problem.
Pick a feature that you want to focus on.
Identify different pages / views required for the selected feature.
Design Wireframes.Identify the API endpoints the feature would require.
If time left complete the basic setup - setup a react app, express
server & connect them with each other. Note - You can test with a
simple endpoint if the frontend and backend are connected.
Day 3 - Day 4 - It's a choice you can start from the front end / back end.
Backend
Create DB and tables.
Basic app structure, setup of the express routes, skeleton only.
Just routes with simple console.logs.Implement the full logic of the route including db calls - test with
PostMan/curl.Implement the front end that calls these api endpoints / routes.
Go back to step 2 of this section & iterate.
Frontend
Implement the front-end view.
Use dummy data to style it.
Once happy with the layout, implement backend endpoints and replace
dummy data with fetch statements.Go back to step 1 of this section & iterate.
Day 5 onwards
Iterate.
STAR π
STAR
Business problem
At CodeYourFuture, trainees keep a brag diary to build up a bank of
examples of their skills, knowledge and capabilities. They need these
examples for interviews.
Everyone does this differently. But really everyone should record these
in the format they need for interview: STAR.
STAR means Situation, Task, Action, Result.
How can trainees record, review, and recall these examples
in an organised way?
Proposed functionality
A user account for each trainee.
A way to record examples in the STAR format
Can this be a template?
Should this be a conversational form?
A way to review examples
Can a view show many entries together so users can browse their
diariesCan users link or share an entry with a mentor if they choose?
A way to recall examples
Can entries be searchable, perhaps using a free Algolia React
plugin?Can we record and show the date of the event/experience
happened, instead of the date the entry was made on the websiteCan we tag entries? Is that useful?
As the trainee completes the course, a constellation of STAR answers are
accumulated.
These answers should be stored in a PostGreSQL database and displayed by
a React front end.
Users and roles
As a student, I want to be able to create an online diary that holds all
of my STAR based entries.
As a student, I want to be able to return and update and improve my
entries as well as answer general interview questions using them.
As a TA, I want to know that trainees are regularly adding to their STAR
accounts and even suggest to them ‘hey, you solved that, or helped - add
it to your STAR account’.
As a PD mentor, I want to be able to discuss their examples and help
them elaborate and celebrate both their CYF and non-CYF STAR examples.
Stretch goals
User adaptability
A trainee can select and answer a particular interview question
listed.A STAR entry can be compiled and shared by a trainee , either
with others or to a document.
User Research
Speak to trainees about what extras would help them write their
STAR entries - prompts or questions?Speak to PD mentors and past students to ask how many examples
should trainees be aiming to provide - or how many skills do
they suggest to demonstrate (and which ones)?
Scout Activity Scheduler π
Scout Activity Scheduler
Business problem
One of the volunteers (Ali Smith) also helps out with a group of Scouts
who plan an international expedition to the Swiss Alps every 5 years.
Since this is a big (and expensive) trip, the organisers offer each
individual Scout the choice of 3 activities that they would like to do.
Once the activity choices have been submitted, the organisers produce
groups for each of the activities. These groups are then added to a
daily schedule, fitting around some activities that the whole group will
do together.
The schedule has the following constraints:
Groups can be configured to either fill 1 day or 2 days on the
scheduleAll of the groups are added to the schedule at some point during the
tripNo individual Scout is doing two activities on the same day
It is allowed for an individual Scout to not be assigned to a group
on each day. An activity will be created for them to do on that day
In the past, this planning has been done by writing out the groups on
pieces of paper and moving them around until a suitable schedule is
found. However, this requires a lot of manual checking, so producing the
schedule more easily in software is desirable.
What is the simplest thing that could possibly work?
Proposed functionality
Users and roles
As a trip organiser, I want to generate a schedule that meets all of
the constraints listed above.
As a trip organiser, I want to generate multiple schedules that can
be chosen from based on other “non-computable” properties (e.g. avoiding
schedules that “too tiring” for individual Scouts)
Stretch goals
- ?
Things to consider
Ali Smith is happy to be consulted on the requirements.
Ideally the app should be working (and verified) by the end of January 2024.
Shared Bookmarks π
Shared Bookmarks
Business problem
As developers, we spend a lot of time reading articles on the web and we
often want to record useful links to come back to them later. It is fun
to share your bookmarks with others so that they can find interesting
and useful links too.
Here are some examples of bookmark sites:
What is the simplest thing that could possibly work?
Proposed functionality
Display a list of links stored as JSON files within the repo
- Each JSON file contains the URL, title and a description of the
link
- Each JSON file contains the URL, title and a description of the
Users and roles
As a developer, I want to share a list of interesting/useful links
that I’ve found.
Stretch goals
Allow a user to search the links
Switch from storing the links as JSON files to a database. To do
this securely, this may require supporting authentication- Suggested approach: design the authentication so that only 1
user is supported. You can then fake “registering” this 1 user
behind the scenes and save the password so that only 1 person
can log in
- Suggested approach: design the authentication so that only 1
Allow other developers to subscribe to updates by supporting RSS
Things to consider
<DESCRIPTION OF OTHER THINGS TO CONSIDER>
Slack dashboard π
Slack dashboard
Business problem
Slack is the main forum for communication between all of the members of
the CYF family during the week; there are a lot of messages and calls
going back and forth between various groups and channels. It allows us
to provide mentoring during the week, even though we’re only able to get
together as a whole group on Sundays, and is a core part of the CYF
social network.
However, this extensive communication means it’s sometimes difficult to
keep track of who’s been talking and how much. This means that we can
miss out on when a trainee has stopped communicating, which can be a
signal that they need further support. Communication is one of the key
soft skills we’re encouraging, too, and we want to be able to evaluate
how trainees are doing at this.
Proposed functionality
To help trainees and mentors understand communication levels in each
city, this application will create a dashboard to view statistics of
Slack usage for each week of the course. To encourage trainees to be
proactively communicating their progress with the rest of the group, the
mentors will be able to set individual and class targets.
Priorities
Aggregated Communication stats (messages and calls) of certain
number of trainees in a given Slack channel over a period of time
/mentorAbility to create different cohorts based on a region, list of
trainees and a number of Slack channels /mentorA unique trainee profile that summarises their personal stats per
week and overall
Users and roles
Both trainees and mentors will be able to see information about the
levels of communication in class and city channels (although the
trainees’ view will only show their detailed data). Additionally,
mentors will have an administrative role, setting individual and class
targets for number of messages and number or duration of calls.
Likely challenges
Building this application would require integration with the Slack
API pretty early on (you can build
some dashboards with canned data to prove out the UI, but we want this
whole process to be as automated as possible). The data itself can be
pretty boring, so how do you make it fun to use, could you try some kind
of gamification? How does this align with trainees’ incentives and drive
the behaviour we’re actually trying to encourage (we don’t want people
posting “asdf” just to get their numbers up, for example - how do we
encourage quantity and quality)?
Stretch goals
Notifications: can we prompt trainees to hop back into the
channel if they’ve been away? What if it’s for a reason? Can they
snooze these messages and/or be prompted to contact a mentor?Integrations: how can we get this Slack data into e.g. Google
Sheets along with the other information we have about trainees'
progress?
Space Aliens π
SpaCy Aliens
THIS PROJECT COULD INVOLVE SOME PYTHON
Business problem
At Code Your Future, trainees are often learning many languages at the same time, and English is just one of them. During class and in study
sessions, we get lots of practice with English but during the week sometimes we need a buddy, especially to practise professional scenarios like job interviews, code reviews, and demos. Most English support available does not support trainees with highly technical conversations, and hardly any can translate technical concepts from a different language we already know.
How can trainees practise business English with a tech focus in a single, purpose-built platform? Can they use a chatbot that converses with users in their target language, providing corrections,
explanations, and relevant vocabulary based on the context of the
conversation.
What is the simplest thing that could possibly work?
Proposed functionality
Contextual Learning Engine
Detect conversation topics and suggest relevant vocabulary and phrases.
Use NLP to correct syntax and grammar mistakes in real-time.
Daily Scenario Simulations
Simulate common daily scenarios like responding to code review,
asking for help with blockers, analogising technical concepts, etc.Create a specific prompt for practising Technical Interviews
Users and roles
As a language learner I want to practice English in a real-world context
As a part-time learner I want to practice English on my own schedule
As a mentor I want to suggest realistic scenarios for my students
to practice English
Stretch goals
UX: Create a logged in area to track progress
QE: Integrate Lighthouse testing into the deployment workflow
Cloud: Define GitHub actions and set budgets for Lighthouse scores
AI: Integrate voice recognition
Things to consider:
The back end can be a REST API and the front end a single-page app,
which scores 100 for Accessibility on Lighthouse.Consider running spaCy in the browser using WebAssembly.
Consider the tradeoffs of using ChatGPT vs spaCY and pick the simplest thing that can possibly work
This is a challenging project suitable for grads and high-performing trainees
Look at Tip of Our Tongues for ideas from a related project
Study Buddies π
Study Buddies
Business problem
At Code Your Future, trainees form study groups to work together during
the week.
It’s very complicated to arrange this as everybody has different
schedules. Some trainees work nights, others look after their children
during the day; some trainees work zero hour or gig jobs and their
availability changes all the time.
Everybody’s schedule is different, but many people’s schedules are
complimentary. If we could all put our availability in one sorting
system, an application could tell us who has matching availability.
How can trainees discover and connect with study partners in an
organised way?
Proposed functionality
A way to enter your availability
How will you define availability and time?
What is the minimum and maximum amount of time to make available
for a useful study group?Can users connect their Google calendars to enter availability?
And is this MVP?
A way to match with other trainees
How will you only show trainees with overlapping availability?
How will users book this time; is there a maximum number of
trainees that is useful to form a study group?Should everyone in class be matched and grouped at once, or
should trainees do this ad hoc?
These availability ranges should be stored in a PostGreSQL database and
displayed by a React front end which scores 100 for Accessibility on
Lighthouse.
Users and roles
As a trainee at Code Your Future, I want to form study groups with
people who are available without constantly negotiating with 30 people.
What else do trainees want? How will you find out? Some user research
may be needed.
Stretch goals
Jack Jones
- What happens when someone cannot match with anyone? How will you
discover and communicate this situation to their cohort?
- What happens when someone cannot match with anyone? How will you
Preference ranking
- Sometimes we can be available if necessary, but it’s not very
convenient. Could users rank their availability?
- Sometimes we can be available if necessary, but it’s not very
Lighthouse CI
Can you integrate Lighthouse testing into your deployment workflow?
Who will define the Github action? How will you decide what
budget
to set?
TOOT π
Tip of Our Tongues
Business problem
At Code Your Future, trainees and mentors collaborate and communicate
with each other while working on projects. However, sometimes we face
difficulty in phrasing our comments, questions, or feedback effectively,
especially for those of us who are speaking English as an additional
language.
How can we use APIs like DataMuse, Wordnik, and Grammarly to craft
clearer and concise messages in English? How can we use speakable
elements to check we are saying words clearly? How can we use technology
to improve our communication skills and overall collaboration
experience?
What is the simplest thing that could possibly work?
Proposed functionality
Input message
Allow users to input their initial comment, question, or feedback
Phrase suggestions
Evaluate message
Use Grammarly, DataMuse, or Wordnik APIs to generate alternative
phrasings, synonyms, or related termsOffer suggestions for more concise or clearer wording
Message refinement
- Users select and edit suggested phrasings to create a final version
of their message
Speakable
Allow users to hear the pronunciation of words or phrases in their
messagesProvide an option to adjust the speech rate and volume for better
understanding
These features should be supported by a PostgreSQL database and
displayed by a React front end, which scores 100 for Accessibility on
Lighthouse.
Users and roles
As a CYF member, I want to improve my communication skills and
ensure my comments, questions, and feedback are clear and concise in
English.
As a project manager, I want to enhance the overall collaboration
experience within Code Your Future, ensuring effective communication
among all participants.
Stretch goals
Sentiment analysis
- Use sentiment analysis to ensure that the suggested phrasings convey
a positive and supportive tone
Lighthouse CI
Integrate Lighthouse testing into the deployment workflow
Define GitHub actions and set budgets for Lighthouse scores
Things to consider:
Integrating with APIs like DataMuse, Wordnik, and Web Speech API
requires understanding their features and limitations. How can you check
the suggestions provided by these APIs are accurate and relevant?
https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance
https://developer.wordnik.com/gettingstarted
https://developer.grammarly.com/docs/api/editor-sdk-react/
Important Note to Developers: This project could be highly
challenging or could be a fairly simple React
component
. The real skill here is to start with the simplest thing that could
possibly work.
If the groundwork is solid, this project could be adopted by CYF Labs,
so get the fundamentals right first.
This App Ointment π
This App Ointment
Business problem
Outside of London, trains don't really work. It makes it really
difficult to plan meetups as everyone is delayed all the time, sometimes
for hours. It would be great to identify the most reliable place and
time to meet for most people, based on actual train times not
timetables.
How can we plot a meeting point between a group of people that is more
reliable and minimises the chance of intolerable disruption,
disappointment, and delay?
This project is all about data and insights. Be very very careful about
your scope.
What is the simplest thing that could possibly work?
Proposed functionality
A way to enter locations
A way to join a meeting group
A way to identify an optimised location
A way to share the identified meeting location
A way to access everything on a phone (in transit)
Users and roles
As a community member, I want to look forward to in-person meetings
instead of dreading them
As a community organiser, I want to arrange meetups people show up
for!
As a tired and old person, I want to spend less time freezing on the
platform at Manchester Victoria
Stretch goals
Considering setting further parameters like:
Maximum time each person is able to spend travelling
Maximum price each person is able to spend on tickets
Save favourite locations to groups
Help users recommend places around train and bus stations that can
host CYF groups (this could be an integration with Maps)
Things to consider
Some people may not be able to share or publish their location; how
will you protect privacy?There is an incredible website called Recent Train Times; what can
you learn from it?
https://www.recenttraintimes.co.uk/Home/AboutCan you use the Google Distance Matrix API to help you?
https://developers.google.com/maps/documentation/distance-matrix/overview
Tick Tock π
Time Tracker
Business problem
At Code Your Future, we often have to balance multiple commitments and
so need to use our time efficiently. To help understand how our time is
being used, we could use a time tracker to track how much time has been
spent on a particular task. This can then be visualised to understand
where time could be used more efficiently.
What is the simplest thing that could possibly work?
Proposed functionality
Tracker
Allow a user to input a description of a task and start a timer for
that taskThe amount of time until the user clicks the stop button is recorded
- This could be stored in the browser e.g. with localStorage
Visualisation
A graph showing the amount of time each task has cumulatively taken
over the whole dayA graph showing the amount of time each task has cumulatively taken
over the whole weekSee https://timeryapp.com/
for inspiration
Users and roles
As a trainee, I want to track how much time a task has taken over a
period (e.g. a day or week) so that I can understand if the time could
be used more efficiently
Stretch goals
Things to consider
This is really just re-building Toggl. How could you put a spin on it?
Can you find a way to report your data on your Coursework
Planner?
What
insights
could you send to your project
board?
Remember, start with the minimum viable product and then iterate.
Volunteer Schedule Calendar π
Eie.io
Business problem
A city farm has volunteers who look after its animals. Every day, one
volunteer is needed every morning and every evening to feed the animals.
We need a website to ensure that every session has exactly one volunteer
signed up.
User roles
Manager - ultimately responsible for ensuring every time slot has a
volunteer.Volunteer - can sign up for sessions.
User stories
As a manager, I need to be able to see if any sessions don't have a
volunteer signed up.As a manager, I need to be able to see the name, email, and phone
number of the person who signed up to any session.As a volunteer, I need to be able to see what sessions are available
to sign up to volunteer.As a volunteer, I need to be able to see what sessions I have signed
up for.As a volunteer, I need to be able to claim an available session.
As a volunteer, I need to be able to cancel a session I have already
signed up for.As a manager, I need to be notified if someone cancels a session at
short notice.As a volunteer, I don't want any other volunteer to know when I am
volunteering, to protect my privacy.
Stretch User Stories
As a volunteer, I get a notification (perhaps by email or SMS) to
remind me about my session.As a manager, I can view statistics around how often each volunteer
volunteers.As a volunteer, I can sign up to sessions on a schedule, e.g.
"Every Monday morning".As a manager, I want to be able to email all upcoming volunteers
with some information.
Table stakes
Unrelated to any one user story, the following requirements must always
be met:
The website must be deployed somewhere where it's accessible to
anyone with internet access.The website must be fully accessible.
If an error occurs, it must be obvious to the user that something
has gone wrong, and what they should do about it.Any data must be persisted - re-deploying or re-starting the server
must not lose any data.
Short-cuts we can take
- Let's not worry about log-in for now. We can just have a
button/drop-down in the corner of the screen to switch between
manager and volunteer roles.
Suggested implementation plan
Talk through what functionality should live where.
Sketch out some wire-frames to map out the user experience.
Model the data in database tables.
Choose some user stories to focus on first, and:
a. Write backend features which you can test out with curl/postman.
b. Add frontend features to visualise the data from the backend and
interact with it.c. Deploy everything.
Iterate.
We are here π
We are here
Business problem
It’s important for CYF to keep track of which students have attended
which sessions and their behaviour during the class, for various
reasons:
Teaching: understanding of who was present for which material,
so we can take that into account when assessing progress and
planning catch-up activities, and seeing who needs special attentionFinance: accurate payout of expenses for travel, etc.
Pastoral: seeing when a student has missed multiple sessions, so
we can investigate whether there’s a problem we could be helping
them with
Volunteers currently take a manual register and then copy that to a
spreadsheet by hand. This is not very reliable and it doesn’t give us as
much information as we want.
Proposed functionality
Trainees clock into classes themselves. Attendance is logged to a class
and a date (with start time), and this data is available as a public API
from which the volunteers can pull the data they need. There is already
a substantial amount of automated tracking by API for all the other
milestones.
Volunteers can flag specific participation problems, and this
information is also attached to the trainee object on the API.
Required Information
Class name
Class start time and date
Trainee ID
Trainee clock in timestamp (so punctuality can be computed)
Mentor flags: LEFT EARLY, CAMERA OFF, LOW PARTICIPATION, ABSENT
Users and roles
As a trainee I want to sign in to class on time and show that I am
here
As a volunteer I want to update trainees’ self reports and add
nuance around participation
As a cohort we want a quick report on our participation
Remember: Do the simplest thing that could possibly work.
Likely challenges
Trainees might forget to clock in – how will you handle this?
A public API cannot expose trainee names directly – how will you
handle this?
Stretch goals
*As a volunteer, I want to sign in to class and show that I am here*
Add sign in for volunteers and create a separate participation report so
that volunteer participation is also made visible
Data Processing/Reporting
Written summary - Produce a short summary of participation
- Slack integration: Post a summary after a class in a
specific private channel for stakeholders.
- Slack integration: Post a summary after a class in a
Aggregated Summary - Have a summary for one or several cohorts
with detailed information for module leads- Aggregated Visualisations - Present graphs of data to be
able to see progress over a given time period
- Aggregated Visualisations - Present graphs of data to be
What Rubbish π
What Rubbish
[THIS VERY CHALLENGING FRONT END PROJECT COULD INVOLVE SOME PYTHON AND A
LOT OF LEARNING]
Business problem
At CodeYourFuture we are many of us travellers. But everywhere we go,
recycling works differently. We are highly conscientious people so this
is exhausting. Sometimes it feels like we are collectively accumulating
a PhD in recycling rules around the world. How can we know what to
recycle and what is general waste?
What is the simplest thing that could possibly work?
Proposed functionality
Computer Vision and Classification
Camera view - User points camera at trash item
Object recognition
OpenCV for basic shape and color recognition
MobileNetV2 model for complex items
Waste categorisation - Classify items as recyclable, compostable, or landfill
Application built as a PWA
Users and roles
As a conscientious environmentalist, I want to quickly sort my rubbish wherever I am
As a CYF host I want my offices to be cleaned up after classes
As a CYF member I want to clean up after class
Stretch goals
QE: Integrate Lighthouse testing into the deployment workflow
Cloud: Define GitHub actions and set budgets for Lighthouse scores
Data: enhance advice with the Waste Services
API
Things to consider:
OpenCV.js to perform shape and colour recognition in the browser for
initial sortingTensorFlow.js to load a pre-trained MobileNetV2 model for advanced
object identification.The front end could be built with React, making use of Service
Workers for PWA cachingThe computer vision logic can run entirely on the client-side
Adding TensorFlow.js WASM Backend in Create React App | by Gant
Laborde | Red
ShiftDeploying a Deep Learning Model on Web and Mobile
ApplicationsHow to build an image classifier for waste sorting | by Collin Ching | Towards Data Science
There’s an API-focused briefing for the same business problem here:
Final Project: How Does It Work
Here