Git Product home page Git Product logo

shapepicker's Introduction

Welcome to ShapePicker ๐Ÿ‘‹

Platform

ShapePicker is a simple app to drag shapes around a canvas.

You can create circles, squares and triangles at random places, drag it around and remove them if you want to. You can also see how many shapes you have created, and delete them all in a single step.

And of course, if you make a mistake, you always have the safety of undoing your actions! ๐Ÿ˜Œ

Purpose and decisions ๐Ÿค“

The idea is to explore best programming practices while implementing a draw canvas exercise. I like to use MVVM as default, as it's an efficient way of architecture the project with single responsibilities. It also helps to implement tests.

Speaking of tests, I think it's a right approach to implement Unit and UI tests for this exercise. Here I will use the default Apple frameworks for doing that.

One exciting challenge is the undo functionality. The Command pattern can help us to achieve this accurately.

To run the project ๐Ÿƒโ€

I'm using Xcode 9.4.1, with iOS 11.4 as platform target. A simple build and run should be all needed.

TODO / Suggestions โœ…โ€

  • Scrollable canvas
  • Infinite canvas - grow as you need it!
  • Pinch gesture to change size of ShapePicker
  • Change colour of shapes - maybe with force touch?
  • Performance considerations for a possible big number of UI elements

shapepicker's People

Contributors

tsainte avatar

Stargazers

 avatar

Watchers

James Cloos 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.