もう経理で悩まない!middayで実現する快適フリーランスライフ
日々のコーディングや設計作業に加え、フリーランスには請求書作成、作業時間の記録、プロジェクトごとの収支管理など、面倒な事務作業がつきものです。middayはこれらの作業を一本化し、最小限の労力で最大の効果を得られるように設計されています。
請求書作成の自動化
プロジェクトごとに記録した作業時間から、自動で請求書を作成できます。手動で時間を計算したり、テンプレートを探したりする必要はもうありません。
作成した請求書はPDFとして出力可能で、顧客への送付もスムーズになります。
タイムトラッキング
プロジェクトごとの作業時間を簡単に記録できます。どのプロジェクトにどれくらいの時間を費やしたか、一目で把握できるので、効率的な働き方をサポートします。
サボった時間も正直に記録...ではなく、集中してコーディングに取り組んだ時間を正確に記録しましょう!
ファイル管理と経費精算
プロジェクトに関連するファイルや領収書などを一箇所で管理できます。
経費を記録しておけば、収支の把握が楽になります。
領収書を山のように溜め込んで、月末に泣きながら仕訳...なんていう悲劇ともお別れです。
財務状況のダッシュボード
プロジェクトごとの収益や経費を可視化し、自分の財務状況をいつでも確認できます。
「今月は頑張ったな...来月はもう少しゆっくりしようかな?」といった戦略的な計画も立てやすくなります。
AIアシスタント機能
質問に答えたり、作業をサポートしたりするアシスタント機能もあります。面倒なタスクを任せて、あなたはもっと創造的な作業に集中できます。
middayはTypeScriptとNext.jsで書かれており、自分でホストすることができます。面倒な設定は最小限で済みます。
まずはGitHubからリポジトリをローカルにクローンします。
git clone https://github.com/midday-ai/midday.git
cd midday
.env.exampleをコピーして.envファイルを作成し、必要な環境変数を設定します。
cp .env.example .env
.envファイルには、データベースの接続情報などを記述します。PostgreSQLとNeonDBに対応しており、設定は比較的簡単です。
npmやyarnを使って、必要なパッケージをインストールします。
npm install
# または
yarn install
Prismaを使って、データベースのスキーマを同期します。
npx prisma db push
開発サーバーを起動すれば、すぐにmiddayを試すことができます。
npm run dev
# または
yarn dev
これで、http://localhost:3000でmiddayにアクセスできるようになります。
midday自体は完成されたアプリケーションなので、開発者が自分でコードを書くというよりは、APIやインターフェースをカスタマイズして使うことが想定されます。 例えば、middayのAPIを叩いて、作業時間を自動的に記録するスクリプトを作成する、といった使い方が考えられます。
以下は、fetchを使ってmiddayのAPIに作業時間を記録する、という架空の例です。
// 仮のAPIエンドポイントとトークン
const API_URL = "http://localhost:3000/api/timetracking";
const API_TOKEN = "your_secret_api_token";
interface TimeEntry {
projectId: string;
description: string;
startTime: string;
endTime: string;
}
// 作業時間をmiddayに記録する関数
async function logTime(timeEntry: TimeEntry) {
try {
const response = await fetch(API_URL, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${API_TOKEN}`,
},
body: JSON.stringify(timeEntry),
});
if (!response.ok) {
throw new Error(`Error: ${response.status} ${response.statusText}`);
}
const data = await response.json();
console.log("Time entry successfully logged:", data);
} catch (error) {
console.error("Failed to log time entry:", error);
}
}
// 実際の使用例
const myWork = {
projectId: "proj-abc-123",
description: "Implement new login feature",
startTime: new Date().toISOString(),
// 1時間作業したと仮定
endTime: new Date(Date.now() + 60 * 60 * 1000).toISOString(),
};
logTime(myWork);
このように、middayは単なる管理ツールにとどまらず、APIを通じて様々な自動化の可能性を秘めています。例えば、あなたのIDE (統合開発環境) やタスク管理ツールと連携させることで、さらにサボって楽できる、もとい、生産性を向上させることも夢ではありません。