• Stars
    star
    586
  • Rank 76,279 (Top 2 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 12 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Intuitive note taking app. Import and annotate PDFs, manipulate imported photos with intuitive gestures, and take notes with Apple Pencil.

Overview

Loose Leaf is a notes app for iPad created by Adam Wulf. Learn more and see demo videos at https://getlooseleaf.com. Support this project and download the app on the App Store.

Enjoy the app? Buy me a coffee โ˜•๏ธ and become a sponsor!

Unique Gestures

Organize pages into documents:

Duplicate pages and scraps with gestures:

Ink sticks to imported images:

Use ruler for straight or curved lines:

Scissors can cut imported images:

More gesture videos available on the Loose Leaf site.

Building Loose Leaf

First, clone the Loose Leaf repository and initialize all submodules:

git clone [email protected]:adamwulf/loose-leaf.git
cd loose-leaf
git submodule update --recursive --init

Next, you'll need to add your own client ids and secrets for MS App Center, Twitter, Facebook, Pinterest, Imgur, and Mixpanel. All of these are stored in a file called AppIds.plist. To get this file setup, copy from the template file:

cp Project/LooseLeaf/AppIds-Template.plist Project/LooseLeaf/AppIds.plist
open Project/LooseLeaf/AppIds.plist

If you don't have ids for some of these services, leaving them blank will still let you build and run the app, though some features may not work.

That's it for configuration - now you can build the app and run it on your iPad!

Get Involved

Help translate Loose Leaf into your language! Join the project and start translating here: https://poeditor.com/join/project/UBaYwL0YTh

Some great places to get involved and help make Loose Leaf better for everyone:

  • Feature #279, #696, and #697 - Add additional share options - destinations like Dropbox, Droplr, and Evernote would be nice additions
  • Feature #1576 Update the ruler tool to act similar to Apple's Notes app and toggle to stay on the page
  • Feature #1618 Support arbitrary page sizes instead of only screen-ratio sized pages
  • Feature #1632 Add optional margin to imported PDFs
  • Bug #1723 - Exporting multiple pages will often crash if the user has more than 10 documents imported. Super sneaky memory corruption bug going on here.

Loose Leaf includes a spacecommander as a submodule to help with keeping code style consistent. Please format all your code before submitting a PR by using the included format-all.sh and format-staged.sh scripts.

More Code

Much of the Loose Leaf codebase is separated into separate submodules:

  1. PerformanceBezier - A small library to dramatically speed up common operations on UIBezierPath, and also bring its functionality closer to NSBezierPath
  2. ClippingBezier - Calculates intersection points, paths, and shapes between two UIBezierPaths
  3. JotUI - OpenGL based drawing view that supports custom brush textures, undo/redo, and asynchronous import and export.
  4. MMStretchGestureRecognizers - A collection of three gestures that can stretch an arbitrary view with four fingers, used in the clone gesture.
  5. cloudkit-manager - A simple wrapper to CloudKit to make passing messages with attachments easy between multiple users
  6. touch-chart - Simplify and smooth UIBezierPaths by reducing the number of elements within the path

Branches

The master branch contains all in-development code. The alpha branch contains the settings used for App Store releases. Each App Store release is tagged. The marketing branch shows hand shadows during gestures and is used to record demo videos.

Icons

Many of the icons used in Loose Leaf were created in PaintCode. Other icons were created with Photoshop. Both *.paintcode and *.psd files are included in the Icons directory.

Extra Applications

This repo also includes two apps used during development of Loose Leaf:

  1. LittleClipper - This app was used to help test the touch-chart and ClippingBezier libraries during the development of the scissors feature.
  2. ShapeShifter - This app demonstrates the use of MMStretchGestureRecognizers and helped to tune the clone scrap/page gesture.

License

The Loose Leaf app and sample code are provided under the MIT License. Attribution is required.

Support This Project

More Repositories

1

app-launch-guide

This aims to be an indie dev's definitive guide to building and launching your app, including pre-launch, marketing, building, QA, buzz building, and launch. More info at:
3,926
star
2

Columnizer-jQuery-Plugin

The Columnizer jQuery Plugin will automatically layout your content in newspaper column format. You can specify either column width or a static number of columns. And, of course, itโ€™s easy to use!
JavaScript
755
star
3

PerformanceBezier

A small library to dramatically speed up common operations on UIBezierPath, and also bring its functionality closer to NSBezierPath
Objective-C
356
star
4

JotUI

OpenGL based drawing view built for and used by Loose Leaf for iPad
Objective-C
261
star
5

ClippingBezier

ClippingBezier calculates intersection points, paths, and shapes between two UIBezierPaths
Objective-C
238
star
6

json-to-mysql

Easily take any JSON object and create+insert it into a mysql table built from its structure. Also search, update, index, and validate tables with JSON.
PHP
134
star
7

ios-hand-shadows

Add shadows to your gestures for better demo videos of your app
Objective-C
121
star
8

PowerPointToUIImage

Objective-C code to generate UIImage thumbnails from slides in a PowerPoint (ppt) file
Objective-C
56
star
9

cloudkit-manager

A simple functional example of building messaging for your app on top of CloudKit.
Objective-C
51
star
10

ios-uitouch-bluedots

Simple code to add blue dots for every UITouch in an app - Helpful for recording app demos that show touch locations during use.
Objective-C
51
star
11

Inkable

Swift
41
star
12

Clocks

Swift implementations of a Lamport clock, hybrid logical clock, and a vector clock.
Swift
29
star
13

automatic-php-api

A barebones PHP API for the Automatic API
PHP
24
star
14

DrawUI

A variety of methods for making a drawing canvas UIView for iPhone and iPad. Objective-C.
Swift
19
star
15

MMStretchGestureRecognizers

A collection of three gestures that can stretch an arbitrary view with four fingers. Used in getlooseleaf.com's clone gesture.
C++
18
star
16

touch-chart

Simplify and smooth UIBezierPaths by reducing the number of elements within the path.
Objective-C
15
star
17

DrawKit

git mirror of DrawKit OS X framework from http://apptree.net/drawkit.htm
Objective-C
15
star
18

spare-parts-app

Simple 2D point and line physics using Verlet integration. Port and fork of https://www.youtube.com/watch?v=tAd7ttKbugA.
Objective-C
14
star
19

vectorboolean

Github clone of https://bitbucket.org/andyfinnell/vectorboolean
Objective-C
13
star
20

PonyExpress

Type-safe NotificationCenter alternative for Swift
Swift
8
star
21

PageCollectionView

Collection view controller, view, and layouts for pinching from book view, to page grid, to full screen page.
Swift
7
star
22

stanford-postagger-objc

This is an Objective-C port of Stanford's Java Part-of-Speech Tagger for iOS
Objective-C
7
star
23

chili58

A choc-spaced version of the Lily58 mechanical keyboard.
6
star
24

jotbook

PHP
6
star
25

chrome-stream-chat

a simple Chrome extension to combine youtube + livecoding + twitch chat
Objective-C
4
star
26

old-khan

This is a version of Khan Academy cerca 2010 and should be taken as an old reference only. this code is not maintained. For up to date Khan Academy code, look at:
JavaScript
3
star
27

bezier-curve-ios-examples

a simple project that shows different bezier curve drawing/clipping/masking examples
3
star
28

easy-php-app

A barebones PHP app that uses Twitter OAuth for user login and https://github.com/adamwulf/json-to-mysql for database access.
PHP
2
star
29

Locks

NSLock alternatives from https://www.vadimbulavin.com/atomic-properties/
Swift
2
star
30

neuralnet

A super simple neural network written in c++ from the tutorial by @BobbyAnguelov
C++
2
star
31

MMToolbox

A little bitty collection of Objective-C helper categories and classes
Objective-C
2
star
32

SwiftPGN

Basic chess pgn parser in Swift
Swift
2
star
33

verlet-nn

A simple CPU based educational neural net, with neuron visualizations using verlet integration.
Objective-C
2
star
34

SKDraw

An example SKView that renders a scene with two bezier path lines, one as a blue line, and one as eraser
Objective-C
2
star
35

twitter-manage

A simple twitter app that can help automatically manage followers
PHP
2
star
36

PaperPile

A swift reimplementation of Loose Leaf's core feature set
Swift
1
star
37

drivesafetogether

PHP
1
star
38

ARC-dealloc-self

This repository explains how and when an object might be dealloc'd inside of one of its own methods, and provides alternative implementations that would not exhibit this memory bug.
Objective-C
1
star
39

MMPageManager

Objective-C
1
star
40

Caches

Swift datastructures for caching, a wrapper around NSCache and dictionary with weak values
Swift
1
star
41

GLPaint

Both OpenGL ES 1.1 and OpenGL ES 2.0 versions of Apple's GLPaint app
Objective-C
1
star
42

nswindow-nsscreen-restoration

Simple project showing window origin will restore, but the screen will not restore
Objective-C
1
star
43

SwiftTex

A very simple Latex parser and math expression simplifier
Swift
1
star
44

QuadTree

A simple Swift implementation of a QuadTree data structure
Swift
1
star
45

simplenn

Bare bones neural network written in Objective-C, based off of the tutorial: http://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/
Objective-C
1
star