Skip to content

Latest commit

 

History

History
65 lines (52 loc) · 4.42 KB

ONBOARDING_PROJECT.md

File metadata and controls

65 lines (52 loc) · 4.42 KB

Onboarding project

Welcome to the FINN apps team. We have a project prepared for you to get used to some of the decisions we've taken as well to get feedback on them.

Some of the topics that you'll cover here are:

  • Code style
  • Architecture
  • Folder naming and structure
  • Networking
  • Persistency
  • Animations and transitions
  • How to create a new feature module
  • How we do dependency injection
  • How we do navigation
  • The current view abstractions we use
  • What utils are available
  • What fonts, colors and dimensions to use in order to make it fit in the app.
  • Light and Dark mode support.
  • Modularized codebase.

The project consists in adding the Wishlist feature to the FINN app: You should be able to navigate to an ad in FINN and add it and remove it to your Wishlist. You should also be able to access all your wishlist entries from your "Min FINN" page. Another requirement is that if you lose Internet connection while the app is running it should be handled gracefully, show the wishlist as it was in it's last known state. The final requirement is that you should create at least one new module in the codebase (on iOS that means adding at least one more SPM library in finn-app-modules).

The Wishlist item in the user wishlist should include:

  • Picture of the item
  • Price of the item
  • Status Ribbon (active, sold, deactivated...)
  • Last updated time
  • Place
  • Title

Normal approach

Use the favorite ads backend as a wishlist backend (perhaps a "wishlist"-favorite list 🤷) and be inspired by the existing favorite ads API code.

If you are thinking something like "I'm making a wishlist not a favorite list" and want to have a more customized backend have a look at https://github.schibsted.io/finn/apps-wishlist-onboarding, you can run that on your local machine and connect the simulator/emulator to it.

Optional task

If you want to know more about our backends. Clone the Native Apps Proxy and Apps Gateway repositories and try to start the services locally on your machine. You can then also connect the app running in simulator/emulator to the locally running backends.

History of FINN app backends

A brief history lesson related to the app backends. Our app was originally designed to contact a single backend-for-frontend known as the Native Apps Proxy. The proxy contacted other services through various protocols, and merged and transformed results for an app-specific response. As requirements and strategies have changed, we have moved to instead use domain specific services, maintained by other teams at FINN, but offered through the Apps Gateway to give a single root URL and a uniform way of accessing backend services.

Design suggestions

Below you can see designs for how the feature could look. You are encouraged to experiment with animations and creative UX concepts to test the possibilities and limitations of our app architecture. If you have any questions get in touch with your assigned buddy and/or TDE.

We don't expect you to spend too long on the task, anything between 1 and 3 weeks is considered reasonable. We are thankful for having you on the team and we can't wait to see all the things we'll do together!

Wishlist button:

Light not added Dark not added Light added Dark added
Screenshot_1653303017 Screenshot_1653303024 Screenshot_1653303033 Screenshot_1653303028

The wishlist entry:

Light Dark
Screenshot_1653303484 Screenshot_1653302886

Empty state of the wishlist:

Light Dark
Screenshot_1653302916 Screenshot_1653302904