フリーランス向けクライアントポータル
Workio
フリーランサー、クライアント、プロジェクト、メッセージ、時間管理、請求を一つにつなぐワークスペース。
“単体のCRUD画面ではなく、権限と業務の流れを考慮した一貫性のあるプロダクトを設計・実装できます。”
01
課題
フリーランサーは、見込み客、案件範囲、顧客との連絡、予定、ファイル、作業時間、経費、請求を複数のツールで管理しがちです。Workioは、その業務サイクルをフリーランサーとクライアントが共有できる一つのワークスペースにまとめます。
02
担当
プロダクト設計、業務フロー設計、Djangoアーキテクチャ、フロントエンド/バックエンド実装、権限制御、データ設計、テスト、デプロイ準備。
03
制約
同じデータに対してフリーランサーとクライアントで異なる権限が必要です。財務データの追跡可能性、招待の安全な有効期限、非公開ファイルの保護、提案・マイルストーン・時間・経費・請求をまたぐ状態の整合性も保つ必要がありました。
04
プロセス
業務の流れをaccounts、projects、conversations、billing、notificationsのDjangoアプリとしてモデル化しました。まずロール別クエリと権限チェックを構築し、その上に作業テンプレート、ヒアリングフォーム、提案、予定、マイルストーン、履歴、メッセージ、時間計測、経費、請求、ダッシュボード集計を実装しました。
05
成果
問い合わせと提案から納品、支払いまでを一つの情報源で進められる、テスト済みのフルスタック・クライアントポータルになりました。クライアントも共同作業、マイルストーン確認、ファイルやメッセージの交換に参加できます。
体験のポイント
- 公開プロフィール、招待、ロール別ダッシュボードを備えたフリーランサー/クライアントアカウント
- タスク、マイルストーン、ファイル、コメント、活動履歴、保存ビュー、ワークフロー段階を持つプロジェクト
- 提案、サービスメニュー、ヒアリング項目、予定、定期作業、分割支払い
- 添付、未読状態、アプリ内/メール通知に対応した非公開メッセージ
- ライブタイマー、手動時間記録、経費、請求書、元データを追跡できる請求明細
設計とパフォーマンス
- Django 5.2のドメイン別アプリでアカウント、案件、会話、請求、通知を分離
- サーバー側の認可とユーザー範囲付きクエリで共有案件と財務データを保護
- データベース制約とトランザクション更新で二重請求や複数タイマーの競合を防止
- 本番ではPostgreSQLに対応し、ローカルデモではSQLiteで導入を簡略化
- Djangoテストで権限、業務フロー、請求ルール、通知、ダッシュボード集計を検証