npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

beancount-ns

v1.2.0

Published

RSETful api service for beancount

Downloads

18

Readme

beancount-node-server

release version license

演示地址 接口文档

介绍

beancount 是一个优秀的开源复式记账工具,因为其基于文本记录的特性,难以拓展到移动端;本项目旨在将常见的记账行为提取出接口以供网络调用。

本仓库使用 node 进行文本的读写和网络服务支持,利用 bean-query bean-report 获取内容并解析,以 Json 格式返回。并基于已实现的接口内置实现了前端页面(适配移动端)。

snapshot

特性

  • [X] 私有部署
  • [X] 多用户使用
  • [X] 账户管理
  • [X] 资产管理
  • [X] 统计图表
  • [X] 多币种(v1.1.0)
  • [X] 标签
  • [X] 投资管理(FIFO)
  • [ ] 事件
  • [ ] 第三方账单导入

安装

本地安装

  1. 安装 Node
  2. 安装 python3
  3. 安装 beancount
    pip3 install beancount -i  https://pypi.tuna.tsinghua.edu.cn/simple
  4. 克隆本项目或者下载下载Zip压缩包
    git clone https://github.com/BaoXuebin/beancount-node-server.git
  5. 启动服务
    npm install # 或者使用 yarn install
    node server.js
  6. 访问 http://localhost:3001

NPM Package

  1. 安装 Node
  2. 安装 python3
  3. 安装 beancount
    pip3 install beancount -i  https://pypi.tuna.tsinghua.edu.cn/simple
  4. 全局安装 package
    npm install beancount-ns -g
  5. beancount-ns start 启动服务
    beancount-ns -h 查看帮助  
    beancount-ns -v 版本信息  
    
    # 自定义参数
    -p 端口号,,默认 3001
    -dp dataPath 路径,默认 /beancount
    -c operatingCurrency 币种,默认 CNY
    -d startDate 账本初始时间,默认 1970-01-01
    -b isBak 修改文件时是否自动备份,默认 true
  6. 访问 http://localhost:3001

Docker

docker image version docker image size

docker run --name benacount-ns -dp 10000:3001 \
-w /app \
-v "/data/beancount:/beancount" \
-v "/data/beancount/icons:/app/public/icons" \
xdbin/beancount-ns:latest \
sh -c "cp -rn /app/public/default_icons/* /app/public/icons && node server.js"

你也可以使用 docker-compose 启动镜像,创建 docker-compose.yml 文件(将下面的内容拷贝进文件)

version: "3.9"
services:
app:
  container_name: beancount-ns
  image: xdbin/beancount-ns:latest
    ports:
      - "10000:3001"
  # volumes 挂载目录会导 /app/public/icons 中的图标被覆盖,这里将默认图标在挂载后重新拷贝图标
  command: >
    sh -c "cp -rn /app/public/default_icons/* /app/public/icons && node server.js"
  volumes:
    - "${dataPath:-/data/beancount}:/beancount"
    - "${dataPath:-/data/beancount}/icons:/app/public/icons"

执行

# dataPath为beancount文件存放路径,默认 /data/beancount
export dataPath=/data/beancount && docker-compose up -d

使用

  1. 项目启动后,浏览器访问 http://localhost:3001
  2. 首先需要输入唯一用户ID和密码创建一个账本
    2.1 用户主要是区分账本身份(这里推荐使用邮箱),并且限制了单个用户只能创建一个账本
    2.2 密码主要用于加密,当然也可以不填;密码一旦忘记不能找回
  3. 如果你想指定用户可用,可以在 /config/white_list.json 中添加用户;该文件默认为空,表示不指定用户白名单,如果该文件内容不为空,则只允许指定用户使用
  4. 项目初始化了一些常用的账户,你可以根据自己的情况自由改动,如果你之前未使用过 beancount,awesome-beancount 这个项目能给你更多的介绍。

旧版本数据兼容

如果你之前已经使用该项目,在使用新的版本时,需要手动同步 index.bean 中的内容,将之前的 include 删除,添加下面内容

include "./includes.bean"

之前的 beancount 数据怎么导入?

  1. 首先执行上面的步骤,创建一个账本
  2. 将原有数据中的 account 定义数据按类型:Assets, Expenses, Income, Liabilities, Equity 分别放入对应文件中
  3. 将 beancount 历史数据拷贝至 history.bean 文件,即可完成数据的导入
  4. 由于 beancount 的高自由度,你的历史数据导入后可能会导致默认的账户分类无法兼容,可以在 账户>>添加账户 中选择 +新增账户类型 进行自定义,或者直接在 账户>>编辑源文件 中选择 account_type.json 进行修改,点击保存即可完成账户类型的自定义

Tips
beancount 支持 account 的定义中包含中文,但是只能是最后一个节点(或者每个节点的第一个字符为英文,我不推荐这么定义,因为这会让 account 看起来很奇怪)。所以我习惯于将最后一个节点作为该 account 的中文注释。
例如:如果要创建一个公交车出行和支付宝资产这两个账户:
公交车出行定义为 Expenses:Travel:Bus:公交车,支付宝资产定义为 Assets:EBank:AliPay:支付宝

配置文件说明

config/config.json

title: 账本名称
dataPath: 账本存储位置,初始化账本时使用
operatingCurrency: 账本币种 startDate: 账本创建时间,初始化账本时使用

config/white_list.json

用户白名单,默认为空,不作限制;如需限制,在该文件中添加用户名称

example/*

example 文件下为默认账本的结构和数据,你可以根据需要自行修改,文件中的 %startDate%%operatingCurrency% 程序会在用户创建账本时自动替换的账本开始时间和币种,切勿修改

项目负责人

@BaoXuebin

开源协议

MIT @BaoXuebin