Skip to content

Commit

Permalink
Initial (open-source)
Browse files Browse the repository at this point in the history
  • Loading branch information
jlongster committed Apr 29, 2022
0 parents commit 4d9fdfc
Show file tree
Hide file tree
Showing 3,062 changed files with 544,438 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
121 changes: 121 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
default_config: &default_config
environment:
SENTRY_ORG: shift-reset-llc
SENTRY_PROJECT: actual
YARN_CACHE_FOLDER: ~/.cache/yarn
CSC_LINK: ~/windows-shift-reset-llc.p12

cached_files: &cached_files
paths:
- ~/.cache/yarn
- node_modules
- ./packages/desktop-electron/node_modules
- ./packages/loot-core/node_modules
- ./mobile/node_modules
- ./import-ynab4/node_modules
- ./api/node_modules
- ./node-libofx/node_modules
- ./loot-design/node_modules
- ./desktop-client/node_modules
key: v3-dependencies-{{ checksum "yarn.lock" }}

version_tag_only: &version_tag_only
filters:
branches:
ignore: /.*/
tags:
only: /^\d+\.\d+\.\d+$/

version: 2.1

orbs:
win: circleci/[email protected]

jobs:
test:
<<: *default_config

docker:
- image: circleci/node:12.13

working_directory: ~/repo

steps:
- checkout

- restore_cache:
keys:
- v3-dependencies-{{ checksum "yarn.lock" }}

- run: yarn install --pure-lockfile

- save_cache:
<<: *cached_files

- run: yarn test

build_windows:
<<: *default_config

executor:
name: win/default

working_directory: ~/repo

steps:
- checkout

- run:
command: npm install -g @sentry/cli --unsafe-perm
shell: bash

- run:
command: echo $WINDOWS_CERT | base64 --decode >> ${HOME}/windows-shift-reset-llc.p12
shell: bash

- run:
command: yarn install --pure-lockfile
shell: bash

- run:
command: ./bin/package --release --version ${CIRCLE_TAG}
shell: bash

build_linux:
<<: *default_config

docker:
- image: circleci/node:12.13

working_directory: ~/repo

steps:
- checkout

- restore_cache:
keys:
- v3-dependencies-{{ checksum "yarn.lock" }}

- run: yarn install --pure-lockfile

- run: sudo npm install -g @sentry/cli --unsafe-perm

- run: ./bin/package --release --version ${CIRCLE_TAG}

workflows:
version: 2
test:
jobs:
- test
build_version:
jobs:
- test:
<<: *version_tag_only
- build_windows:
<<: *version_tag_only
requires:
- test
- build_linux:
<<: *version_tag_only
requires:
- test
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
yarn.lock text eol=lf
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/data/*
!data/.gitkeep
/data2
packages/desktop-electron/client-build
packages/desktop-electron/.electron-symbols
packages/desktop-electron/dist
packages/desktop-electron/loot-core
node_modules
.DS_Store
lerna-debug.log
Actual-*
.#*
**/xcuserdata/*
.secret-tokens
bundle.desktop.js
bundle.desktop.js.map
bundle.mobile.js
bundle.mobile.js.map
.sentryclirc
export-2020-01-10.csv
70 changes: 70 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@

This is the source code for [Actual](https://actualbudget.com), a local-first personal finance tool. It is 100% free and open-source.

If you are only interested in running the latest version, you don't need this repo. You can get the latest version through npm.

More docs are available in the [docs](XXX) folder.

## Installation

### The easy way: using a server (recommended)

The easiest way to get Actual running is to use the [actual-sync](XXX) project. That is the server for syncing changes across devices, and it comes with the latest version of Actual. The server will provide both the web project and a server for syncing.

```
git clone XXX
cd actual-sync
yarn install
yarn start
```

Navigate to https://localhost:5006 in your browser and you will see Actual.

You should deploy the server somewhere so you can access your data from anywhere. See instructions on the [actual-sync](XXX) repo.

### Without a server

This will give you a fully local web app without a server. This npm package is the `packages/desktop-client` package in this repo built for production:

```
yarn add @actual-app/web
```

Now you need to serve the files in `node_modules/@actual-app/web/build`. One way to do it:

```
cd node_modules/@actual-app/web/build
npx http-server .
```

Navigate to http://localhost:8080 and you should see Actual.

## Building

If you want to build the latest version, see [releasing.md](XXX). It provides instructions for building this code into the same artifacts that come from npm.

## Run locally

Both the electron and web app can started with a single command. When running in development, it will store data in a `data` directory in the root of the `actual` directory.

First, make sure to run `yarn install` to install all dependencies.

In the root of the project:

```
yarn start # Run the electron app
yarn start:browser # Run the web app
```

## Code structure

The app is split up into a few packages:

* loot-core - The core application that runs on any platform
* loot-design - The generic design components that make up the UI
* desktop-client - The desktop UI
* desktop-electron - The desktop app
* mobile - The mobile app

More docs are available in the [docs](XXX) folder.
11 changes: 11 additions & 0 deletions bin/format-staged
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/sh
FILES=$(git diff --cached --name-only --diff-filter=ACMR "*.js" "*.jsx" | sed 's| |\\ |g')
[ -z "$FILES" ] && exit 0

# Prettify all selected files
echo "$FILES" | xargs ./node_modules/.bin/prettier --write

# Add back the modified/prettified files to staging
echo "$FILES" | xargs git add

exit 0
27 changes: 27 additions & 0 deletions bin/import-open-source-package
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/sh -e

ROOT=$(cd "`dirname $0`"; pwd)
NPM_NAME="$1"
NAME="$2"
PACKAGE_DIR="`dirname "$ROOT"`/packages/$NAME"

if [ -z "$NAME" ] || [ -z "$NPM_NAME" ]; then
echo "Usage: `basename $0` <npm-name> <local-name>"
exit 1
fi

if [ -d "$PACKAGE_DIR" ]; then
read -p "Package exists, remove $PACKAGE_DIR? [y/N] " -r
if [ -z "$REPLY" ] || [ "$REPLY" != "y" ]; then
exit 2
fi
fi

rm -rf "$PACKAGE_DIR"
URL="`npm view "$NPM_NAME" dist.tarball`"
TMPDIR="`mktemp -d`"

cd "$TMPDIR"
wget -O tar.tgz "$URL"
tar xvzf tar.tgz
mv package "$PACKAGE_DIR"
50 changes: 50 additions & 0 deletions bin/make-release
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/bin/bash -e

VERSION=""

POSITIONAL=()
while [[ $# -gt 0 ]]; do
key="$1"

case $key in
--version)
VERSION="$2"
shift
shift
;;
*)
POSITIONAL+=("$1")
shift
;;
esac
done
set -- "${POSITIONAL[@]}"

NOTES="$@"

if [ -z "$VERSION" ]; then
echo "--version is required";
exit 1
fi

echo "Version: $VERSION"
echo "Notes: $NOTES"
read -p "Make release? [y/N] " -r
if [ -z "$REPLY" ] || [ "$REPLY" != "y" ]; then
exit 2
fi

source ./.secret-tokens

# Tag and push to make windows and linux versions
git push origin master
git tag -a "$VERSION" -m "$NOTES"
git push origin "$VERSION"

# Make a macOS version
./bin/package --release --version "$VERSION"

# TODO: browser version

# Finally, update github issues
curl -X POST -H "x-release-token: $RELEASE_TOKEN" https://actual-automoto.fly.dev/release/"$VERSION"
Loading

0 comments on commit 4d9fdfc

Please sign in to comment.