Have you ever been trying to organise a meetup with a group of friends, but can’t work out what activity to pick? Frustrating right!
Trying to keep up with all group chats across multiple apps can feel like a full time job! Why not let us take care of the leg-work, so you can just enjoy your free-time with friends?
A new app that takes away the stress of event organisation. Struggling to decide what to do? We can help out and auto-generate ideas based on your selected date, location, and category.
Demographic: 20-40 year old working professionals.
People who have busy lives but still want to make time for their friends and try new activities.
Groups of friends with varied schedules, but shared passions.
Suggestions for adventures based on users date, location, and category preferences.
Search through suggestions.
Create personalised event pages.
Invite your friends!
Challenge: There were a lot of foreign keys and associations between the model tables.
Solution: Created a DB schema to visualise the back-end structure and map out the foreign keys between the tables.
Challenge: Our biggest challenge was seeding the suggested adventures based on the users preferences.
Solution: We overcame this challenge by using Google Places API.
Challenge: One of the biggest challenges was creating the models and foreign keys in the right order with the correct foreign keys.
Solution: We overcame this challenge by creating events model first, then adventures model with events foreign key. Next, running a migration to add adventure ID to events. And another migration to allow null adventure ID on events to avoid a loop. Lastly, under the "belongs_to" associations, we added "optional: true".
Ruby models, controllers and routing
HTML for views to build structure of the webpages
Git version control and code reviewing practices
Accessibility implementation best practices
Responsive design
SCSS stlying using partials, nesting, and chaining
Creating inclusive user experiences
Balancing information density with usability
Building trust through transparent design
Color theory and contrast for accessibility
Used DB schema to visualise the back-end structure
Breaking down large problems into actionable solutions
Prioritising features for maximum impact
I mapped out the key user journeys and the purpose behind each step. I prioritised them as we were working to a tight deadline.
Next I selected the path, verb, controller, and action for each step to help us set up the back-end. Lastly, I assigned each step to team members, according to their interests and skill sets.
I planned the DB schema for the app, getting feedback from my team members and TA.
This helped me visualise the back-end structure and ensure each model table contained the correct columns, with the corresponding data-type.
This was also an invaluable step for checking foreign keys and associations, as you can see there are quite a few!
Before diving into coding, we created a mock-up of our final design for our key user journey in Figma, utilising their components feature.
I created the homepage, groups, event generation, categories, adventures partials, adventures info, poll notification, poll selector, votes viewer, event info, notification, and group chat pages.
To manage my team in an agile work environment I created a KanBan board using Github projects. This helped me to visualise the "Things that were, things that are, and some things that have not yet come to pass."
It enabled me to track the progress of the project during our morning stand-up and make a plan for everyone for the coming day that maximised efficiency and prioritised urgent tasks.
We also used a dedicated slack channel for communications throughout the project.
I created a new rails app and repo on Github, and invited my team members to collaborate.
Then I created the Heroku app to do the initial deploy, so I could test the app in production.
Next I bought hapshub.xyz on Namecheap and linked it to the Heroku app.
Next I created the models, based off the DB schema. Worked in pair-programming with Marianna reviewing. I used Devise to setup the user model.
The biggest challenge was creating them in the right order with the correct foreign keys. Especially for the adventures and events models as they both dependent on each other. I overcame this challenge by creating events model first, then adventures model with events foreign key. Next, running a migration to add adventure id to events. And another migration to allow null adventure id on events to avoid a loop. Lastly, under the "belongs_to" associations, I added "optional: true".
I created the base controllers, actions, and views.
We aimed to work with tasks as features, following the feature flow from route, to controller action, to corresponding view. So we could explore the full-stack development life-cycle from back-end to front-end. However, due to dependencies this wasn't always possible.
I refactored the initial HTML into partials for code that was reusable, such as index and show cards.
This helped me organise my code to improve readability by seperating components into manageable elements, and enabled me to update it and apply tailored SCSS later on.
To create the new event form, I split each input into a partial and rendered them in the new.html.erb file using simple_form_for.
I used nav tabs and next buttons so users could easily navigate through the form.
I added HTML5 for the date input to give users the option of adding the date and time on a calendar.
To allow users to search through the suggested adventures I used the pg_search gem to build named scopes that utilise PostgreSQL's full text search.
Added delete feature to events with a notification and redirect to events index page.
Our biggest challenge was seeding the suggested adventures based on the users preferences, we overcame this challenge by using Google Places API.
Using the partials and classes I created in the HTML, I linked corresponding tailored SCSS stylesheets.
For example; I added box-shadow and border-radius to cards to make them stand out from the back-ground.
I used flexbox to arrange and align the image and content within the cards to ensure responsive layouts.
I changed the colour and styling of the CTA buttons so they stand out but still fit into the colour scheme.
To ensure my code is clean, organised and easy to read I utilised SCSS partials, nesting and chaining.
As this was a two week sprint we had to prioritse the key user journey, below is a list of features I would like to add in the future to improve the user experience:
Poll for ideas: allow users to add multiple adventures to a poll, which the members of the group can vote on their favourite.
Update event: enable users to edit event details such as date and time.
Create new groups and add members: feature to add a new group and invite members to join.
Matthew Casey (Full-stack Developer)
Mariana Barbieru (Full-stack Developer)