本文へスキップ
mreysei · Michael Reyes
テーマ

Frela

フリーランスのための会計と請求書。作業時間、請求書、経費を扱い、ロジックはAPIに集約。

種類
Web
年
カテゴリー
濃い緑の背景に「F」のアイコンと名前、「フリーランスのための時間・取引先・プロジェクト・請求書」のコピー。デスクトップのダッシュボードと、請求書一覧を映したスマートフォンが並びます。

プロジェクトについて

Frelaは、スペインのフリーランス向けの会計・請求書アプリで、WebとAndroidで使えます。顧客、プロジェクト、作業時間、請求書、経費をひとつの場所で扱います。

目的:フリーランスが表計算ソフトなしで作業時間を記録し、間違いなく請求し、どの経費を控除できるかを把握できるようにすることです。WebとAndroidで結果が食い違わないよう、はっきりしたルールに従っています。APIが決め、アプリは描くだけ。ロジック、セキュリティ、計算はすべてAPIにあり、アプリは受け取ったものを表示するだけです。

APIが決め、アプリは描く

できること:

  • 税務プロフィールと任意のブランド。ブランドごとに請求書での名義を変えられます。
  • 顧客:個人または企業と、その連絡先。
  • プロジェクト:時間単価または固定価格。暗号化された認証情報とリンクしたリポジトリを持てます。
  • 作業時間の記録:リアルタイムのタイマー、手入力、月間カレンダー。
  • 請求書:下書きから発行、入金まで。番号の付け方を設定でき、ブランド入りのPDFはGoogleドライブにもコピーされます。
  • 経費:カテゴリー、付加価値税と控除の規則、領収書。
  • 概要:請求可能額、入金額、1年間の作業時間。スペイン語と英語、ライトとダークのテーマに対応しています。

セキュリティとプライバシー:パスワードはArgon2id、アクセストークンは短命で、リフレッシュトークンはローテーションし、ハッシュ化して保存します。ログインと登録には試行回数の制限があり、アカウントの有無にかかわらず同じ応答を返します。すべてのリクエストは想定外の項目を捨てる検証を通り、HelmetとCORSの許可リストを使っています。GitHubとドライブのトークン、プロジェクトの認証情報はAES-256-GCMで暗号化し、アップロードされたSVGは無害化します。GDPRに沿って、ユーザーは自分のデータのエクスポートとアカウントの削除ができます。

アーキテクチャと品質:APIはNestJS、Prisma、PostgreSQLで、16のモデル、43のマイグレーション、OpenAPIで文書化した約140のルートがあります。アプリはWebとAndroid向けのFlutterで、Riverpod、Dio、go_routerを使っています。テストファイルはAPIに36個、アプリに27個あり、DockerとGitHub Actionsでデプロイします。

現状:デプロイ済みです。通知機能はこれからです。

技術

スクリーンショット