BAN - Berlin Architectural Network

Berlin Architectural Network is a Ruby on Rails Application built for the homonymous Meetup group, which I've created in 2017. Since then, it has attracted hundreds of architecture lovers who come together to support each other through collaboration and networked learning.

Together with my team from the Bootcamp at Le Wagon, we've built this web application from scratch with Ruby, HTML, SCSS and JavaScript.

Building a social platform as the final project in only 2 week's time, required a good understanding of database architecture, overall enjoyable user experience as well as skills on time and product management.

View Live
Image of BAN Logo
Role
  • Le Wagon Alumni
  • Product Owner

Team
  • Hristian Bozinoski
  • Ekaterina Tugarinova
  • Zeljka Vujic
Stack
  • Github
  • Ruby on Rails
  • PostgreSQL
  • Heroku
Libraries
  • Devise (authentication)
  • Pundit (authorization)
  • Cloudinary
  • Geocoding with Mapbox
  • PG Search
  • Bootstrap
  • AJAX in Rails
  • Websocket and Action Cable
Image of BAN Homepage

Goal and Process

The purpose of this project is to support architects, who are new to Berlin, on getting into the city's architecture scene and give the Meetup group an online presence.

The design process had 3 major phases:

Phase 1 - Sign up

After defining each step of the user journey along with a Figma prototype, we designed the database schema and built the corresponding models on Rails. At this point we introduced Devise for authentication and Pundit for authorization, so that the user could sign up and become a member of the community.

Phase 2 - Browse

In the second phase the user should be able to visit an office's page and check out a member's activity. For the database seeding, we used JSON due to its lightweight format. We also worked with services such as Cloudinary to host and upload images and Mapbox to display the location of the offices.

Phase 3 - Interact

The last phase enabled the user to RSVP to an event, review it and chat with a member. AJAX allowed new content, such as comments and rsvps, to be displayed without reloading the page. For the chat, we've built a bidirectional Websocket connection combined with Action Cable for real-time messaging.

Web Stack

Github helped us keep track of our progress and to collaborate as a team.

Ruby on Rails, as an MVC framework, enabled us to build this web application in only 2 week's time. So that I've understood the advantages behind the concept "convention over configuration".

We've also used PostgreSQL as a relational database combined with Heroku to deploy our app on a production environment.

GitHub icon Ruby on Rails icon PostgreSQL icon Heroku icon

Challenges and solutions

The process was not always smooth and we had some bumps on the way that helped us grow as junior developers.

Image of BAN Database
Database Architecture

The database was a highlight of this project because of its complexity. There were a total of 12 models.

Something unusual about this schema is the comments table that allows foreign keys to be nullified. This decision was made in order to reduce the number of tables. Even though this is valid and works, it's something I would rather break into smaller tables in the future, for the sake of simplicity.

It was nonetheless an opportunity to try and see a different solution in action.

Teamwork on Github

Github not only allowed us to collaborate as a team but also to review and optimize our code on every pull request.

When working together on one feature, I've practiced pair programming with my colleagues. I’ve also learned how to deal with empty files and broken heads on github.

Agile Mindset

As an architect, I've explored the benefits of agile management. This experience guided me throughout the process of building this app.

We've implemented scrum rituals such as daily standups as well as a kanban board on trello, which enabled us to be on time and even build one extra feature.

Next steps

At the moment we're still working on the app.
It's release and announcement to the Meetup group is scheduled for January 2021.