Slide 1

Slide 1 text

SvelteKit × Supabaseで オレオレ看板ボード作ってみた 〜え、思ってたよりムズくね?!〜

Slide 2

Slide 2 text

自己紹介 HIBIKI CUBE @hibiki_cube

Slide 3

Slide 3 text

みなさん

Slide 4

Slide 4 text

タスク管理には 何を使っていますか?

Slide 5

Slide 5 text

世の中のいろんなタスク管理ツール ● ToDoリスト ● ガントチャート ● カレンダーに入れる ● Slackのブックマーク ● 頭で覚えておく

Slide 6

Slide 6 text

SvelteKit × Supabaseで オレオレ看板ボード作ってみた 〜え、思ってたよりムズくね?!〜

Slide 7

Slide 7 text

カンバンボード

Slide 8

Slide 8 text

カンバンボードとは

Slide 9

Slide 9 text

カンバンボードとは

Slide 10

Slide 10 text

カンバンボードとは

Slide 11

Slide 11 text

カンバンボードとは

Slide 12

Slide 12 text

カンバンボードとは

Slide 13

Slide 13 text

カンバンボードのいいところ ● やる事・やりたい事・やらなきゃいけない事を どんどん溜めていける ● 進捗管理も一緒にできる ● タスクの状況が一目でわかる ● 「頑張り」が可視化される

Slide 14

Slide 14 text

カンバンボードのいろんな付加機能 ● GitHubのissueと連携できる ● Milestonesで進捗率を確認できる ● タグで分類できる ● メンバーをアサインできる ● いろんな条件で絞り込み、検索できる

Slide 15

Slide 15 text

既存のサービスでいいじゃん

Slide 16

Slide 16 text

既存のカンバンボードで起きる最大の問題 更新するのを忘れる…

Slide 17

Slide 17 text

既存のカンバンボードで起きる最大の問題 今日も頑張るぞ〜

Slide 18

Slide 18 text

既存のカンバンボードで起きる最大の問題 ノってきた! 捗るぜ!卍

Slide 19

Slide 19 text

既存のカンバンボードで起きる最大の問題 カンバン動かして なかった…

Slide 20

Slide 20 text

カンバンボードの存在を忘れることによる弊害 ● 単純にやることを忘れる・見逃す ● 結局やることを脳内で意識してしまう ● 別のタスクに気が散ってしまい効率が落ちる

Slide 21

Slide 21 text

タスク管理における問題 ● ステータスを更新するのを忘れる ● そのタスクにどのくらいかかったか分からない ● いつまで経っても正確に見積もりができない

Slide 22

Slide 22 text

どう解決する…?

Slide 23

Slide 23 text

カンバンに タイマーをつける!

Slide 24

Slide 24 text

今回作ったもの

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

デモ

Slide 27

Slide 27 text

やりたいこと

Slide 28

Slide 28 text

やりたいこと ● カンバンボードの基本的な機能 ● タイマー(当然) ● データの永続化・同期 ● すべるとでつくりたい🤪

Slide 29

Slide 29 text

やりたいこと ● カンバンボードの基本的な機能 ● タイマー(当然) ● データの永続化・同期 ● すべるとでつくりたい🤪

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Svelte DND Action
DndConsider(e, lane.id)} on:finalize={e => DndFinalize(e, lane.id)} > {#each lane.Items as item (item.id)}
{/each}

Slide 32

Slide 32 text

やりたいこと ● カンバンボードの基本的な機能 ● タイマー(当然) ● データの永続化・同期 ● すべるとでつくりたい🤪

Slide 33

Slide 33 text

DndFinalize export const DndFinalize = async (e: CustomEvent>, laneId: bigint) => { // 並べ替えの更新 // タイマーの開始・停止 // DBの更新 }

Slide 34

Slide 34 text

タイマーの制御(開始) import { timers } from '$lib/timers'; //...なんやかんや if (!$timers[item.id]) { $timers[item.id] = { started_at: new Date(), sessionOffset: 0, duration: 0, }; } $timers[item.id].started_at = new Date();

Slide 35

Slide 35 text

タイマーの表示 import { timers } from '$lib/timers'; //...なんやかんや //↓↓↓

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

タイマーの表示 import { timers } from '$lib/timers'; //...なんやかんや... //↓↓↓

Slide 38

Slide 38 text

やりたいこと ● カンバンボードの基本的な機能 ● タイマー(当然) ● データの永続化・同期 ● すべるとでつくりたい🤪

Slide 39

Slide 39 text

🤔「Supabase使ってみたいな…」

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

Supabaseを そのまま使ってもいいけど…

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

Prismaでデータにアクセス async ({ request }) => { const data = await request.formData(); const itemId = Number(data.get('id')); const timerControl = String(data.get('timerControl')); if (timerControl === 'start') { await prisma.logs.create({ data: { item: itemId, }, }); } }

Slide 46

Slide 46 text

Supabase側でデータができる

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

まだまだ開発がんばります!