The OpenAlloc Project is a family of applications, re-usable libraries, and user interface components, written in Swift.

Swift Libraries

  • SwiftCompactor - formatters for the concise display of Numbers, Currency, and Time Intervals
  • SwiftModifiedDietz - a tool for calculating portfolio performance using the Modified Dietz method
  • SwiftNiceScale - generate ‘nice’ numbers for label ticks over a range, such as for y-axis on a chart
  • SwiftRegressor - a linear regression tool that’s flexible and easy to use
  • SwiftSeriesResampler - transform a series of coordinate values into a new series with uniform intervals
  • SwiftSimpleTree - a nested data structure that’s flexible and easy to use

User Interface Components, for the SwiftUI Framework

  • SwiftDetailer - a multi-platform SwiftUI component for editing fielded data
  • SwiftNumberPad - a multi-platform SwiftUI component for basic number input
  • SwiftTabler - a multi-platform SwiftUI component for tabular data.
  • SwiftTextFieldPreset - a multi-platform SwiftUI component for text input with presets support

XCode Setup

See the Workspace repository for a handy Xcode workspace that contains the library and user interface component repositories.


Open Trackers

Fitness, nutrition, and productivity apps for iPhone, iPad, and Apple Watch.

Open Portfolio

Investing apps for macOS.


Copyright 2021-2023 OpenAlloc LLC

All application code is licensed under the Mozilla Public License 2, except where noted in individual modules.

Re-usable library code may be under the MPL-2.0 or the Apache License, Version 2.0, except where noted in individual modules.

Copyright is held by @reedes’s OpenAlloc LLC, except where noted in individual modules.


Contributions are welcome. You are encouraged to submit pull requests to fix bugs, improve documentation, or offer new features.

The pull request need not be a production-ready feature or fix. It can be a draft of proposed changes, or simply a test to show that expected behavior is buggy. Discussion on the pull request can proceed from there.

Contributions should ultimately have adequate test coverage. See tests for current entities to see what coverage is expected.

Your contributions can be under the your name or organization, but must have a compatible license, preferably MPL-2.0 (for app code) or Apache-2.0 (for re-usable library code).

(This should probably be expanded to a proper policy.)