Giter Site home page Giter Site logo

juniorioscodingchallenge's Introduction

iOS Junior Tech Challenge - Take Home Challenge (Jonathan Agarrat)

Thank you for reviewing my iOS Tech Challenge Submission.

Branches

  • main

    Contains the first submitted code

  • just-for-fun

    Conatins a redesigned app

  • senior-attempt

    Conatins the rings view from the senior challenge

Tasks Completed

  1. Filtering buttons ✅
  2. Floating sum view ✅
  3. Add a pin/unpin action to each transaction ✅
  4. Update the list in the insights tab to reflect expense in each category ✅
  5. Unit tests ✅

Preparation

Please, compile the project in Xcode and run it in your simulator of choice. You will find a working app prototype with 2 screens, accessible via the tab bar. This is the starting point for the challenge.

tech_challenge_images 001

Back in the project, locate the file TransactionModel.swift and have a look at the data model driving the app, the TransactionModel. Some sample transactions can be found in ModelData.swift. These are used to populate the list of transactions you have just seen.

Assignments

General points to consider:

  • follow the specs carefully
  • focus on writing clean, maintainable code
  • write your UI code in SwiftUI, not UIKit

1. Filtering buttons

Add a horizontally scrolling view with buttons for the different categories (shopping, entertainment, food, etc). When the user taps on each of these, the list below should show only the transactions for the selected category. Add a button for all categories as well.

Play the following video to see the feature in action (note: if seeing inside Xcode video may not show fully):

Here are the design specs for the scrolling list of buttons and the buttons themselves:

2. Floating sum view

Add a floating view at the bottom of the list displaying the sum for the transactions belonging to the selected category. The sum should update when the user chooses the different categories.

Play the following video to see the feature in action:

Here are the design specs for the floating view with the sum of the chosen transactions:

tech_challenge_images 003

3. Add a pin/unpin action to each transaction

By tapping on it, the UI should blend/unblend accordingly. The sum in the floating view at the bottom should only consider pinned transactions.

Play the following video to see the feature in action:

Here are the design specs for the unpinned transaction view and the pin/unpin icon:

tech_challenge_images 005

4. Update the list in the insights tab to reflect expense in each category

The insights view should only consider pinned transactions.

tech_challenge_images 007

Make sure that the state between the transactions and the insights tab is kept consistent, as shown in this video capture:

5. Unit tests

Write unit test to verify:

  • filtering of transactions according to category
  • sum of transaction amounts for filtered category

Wrapping up

Once you have completed the assignments, please follow the instructions provided. Please, make sure that your project is complete and it is ready to be compiled and tested using the latest stable version of Xcode.

Good luck!

juniorioscodingchallenge's People

Contributors

jonotko avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.