briefkasten
๐ฎ Self hosted bookmarking app
ํ์ผ ํ์๊ธฐ
์ต์ข ๋ฒ์ ๋ค์ด๋ก๋ (.zip)- playwright.yml
- schema.prisma
- create-feed.ts
- create-screenshot.ts
- index.ts
- cron-update.ts
- zod.ts
- auth.ts
- blurhash.ts
- bookmark-image-repair.ts
- constants.ts
- feed-entry-data.ts
- feed.ts
- imageProxy.ts
- log.ts
- update-feed.ts
- prisma.ts
- queue.ts
- storage.ts
- index.ts
- schema.ts
- index.ts
- schema.ts
- root.ts
- index.ts
- prisma.d.ts
- .env.example
- .gitignore
- package.json
- prisma.config.ts
- README.md
- tsconfig.json
- migration.sql
- migration_lock.toml
- schema.prisma
- arrow.svg
- bell.png
- blob1.png
- blob2.png
- blob3.png
- blob4.png
- browser.png
- empty-state.png
- LoginPattern.svelte
- Logo.svelte
- new.png
- index.ts
- AudioPlayer.svelte
- AudioVisualizer.svelte
- index.ts
- BookmarkActions.svelte
- BookmarkRow.svelte
- DeleteDialog.svelte
- index.ts
- MobileBookmarkActions.svelte
- CommandBar.svelte
- index.ts
- DateRangePicker.svelte
- FeedActions.svelte
- FeedRow.svelte
- index.ts
- MobileFeedActions.svelte
- BookmarkPreviewCard.svelte
- FeedItemPreviewCard.svelte
- HomeScroller.svelte
- index.ts
- Image.svelte
- index.ts
- BookmarkContent.svelte
- FeedContent.svelte
- index.ts
- MetadataSidebar.svelte
- Drawer.svelte
- AvatarMenu.svelte
- Breadcrumbs.svelte
- index.ts
- Navbar.svelte
- QuickAddForm.svelte
- alert-dialog-action.svelte
- alert-dialog-cancel.svelte
- alert-dialog-content.svelte
- alert-dialog-description.svelte
- alert-dialog-footer.svelte
- alert-dialog-header.svelte
- alert-dialog-overlay.svelte
- alert-dialog-portal.svelte
- alert-dialog-title.svelte
- alert-dialog-trigger.svelte
- index.ts
- aspect-ratio.svelte
- index.ts
- avatar-fallback.svelte
- avatar-image.svelte
- avatar.svelte
- index.ts
- badge.svelte
- index.ts
- button.svelte
- index.ts
- card-action.svelte
- card-content.svelte
- card-description.svelte
- card-footer.svelte
- card-header.svelte
- card-title.svelte
- card.svelte
- index.ts
- checkbox.svelte
- index.ts
- command-dialog.svelte
- command-empty.svelte
- command-group.svelte
- command-input.svelte
- command-item.svelte
- command-link-item.svelte
- command-list.svelte
- command-separator.svelte
- command-shortcut.svelte
- command.svelte
- index.ts
- dialog-close.svelte
- dialog-content.svelte
- dialog-description.svelte
- dialog-footer.svelte
- dialog-header.svelte
- dialog-overlay.svelte
- dialog-portal.svelte
- dialog-title.svelte
- dialog-trigger.svelte
- index.ts
- dropdown-menu-checkbox-item.svelte
- dropdown-menu-content.svelte
- dropdown-menu-group-heading.svelte
- dropdown-menu-group.svelte
- dropdown-menu-item.svelte
- dropdown-menu-label.svelte
- dropdown-menu-radio-group.svelte
- dropdown-menu-radio-item.svelte
- dropdown-menu-separator.svelte
- dropdown-menu-shortcut.svelte
- dropdown-menu-sub-content.svelte
- dropdown-menu-sub-trigger.svelte
- dropdown-menu-trigger.svelte
- index.ts
- index.ts
- input.svelte
- index.ts
- label.svelte
- index.ts
- pagination-content.svelte
- pagination-ellipsis.svelte
- pagination-item.svelte
- pagination-link.svelte
- pagination-next-button.svelte
- pagination-prev-button.svelte
- pagination.svelte
- index.ts
- popover-content.svelte
- popover-trigger.svelte
- index.ts
- radio-group-item.svelte
- radio-group.svelte
- index.ts
- range-calendar-caption.svelte
- range-calendar-cell.svelte
- range-calendar-day.svelte
- range-calendar-grid-body.svelte
- range-calendar-grid-head.svelte
- range-calendar-grid-row.svelte
- range-calendar-grid.svelte
- range-calendar-head-cell.svelte
- range-calendar-header.svelte
- range-calendar-heading.svelte
- range-calendar-month-select.svelte
- range-calendar-month.svelte
- range-calendar-months.svelte
- range-calendar-nav.svelte
- range-calendar-next-button.svelte
- range-calendar-prev-button.svelte
- range-calendar-year-select.svelte
- range-calendar.svelte
- index.ts
- select-content.svelte
- select-group-heading.svelte
- select-group.svelte
- select-item.svelte
- select-label.svelte
- select-scroll-down-button.svelte
- select-scroll-up-button.svelte
- select-separator.svelte
- select-trigger.svelte
- index.ts
- separator.svelte
- index.ts
- sheet-close.svelte
- sheet-content.svelte
- sheet-description.svelte
- sheet-footer.svelte
- sheet-header.svelte
- sheet-overlay.svelte
- sheet-portal.svelte
- sheet-title.svelte
- sheet-trigger.svelte
- index.ts
- skeleton.svelte
- index.ts
- switch.svelte
- index.ts
- table-body.svelte
- table-caption.svelte
- table-cell.svelte
- table-footer.svelte
- table-head.svelte
- table-header.svelte
- table-row.svelte
- table.svelte
- index.ts
- tabs-content.svelte
- tabs-list.svelte
- tabs-trigger.svelte
- tabs.svelte
- index.ts
- textarea.svelte
- index.ts
- tooltip-content.svelte
- tooltip-trigger.svelte
- ConfirmAddDialog.svelte
- Dialog.svelte
- DragAdd.svelte
- EmptyState.svelte
- FilterCombobox.svelte
- GlobalShortcuts.svelte
- KeyboardIndicator.svelte
- KeyboardShortcutsHelp.svelte
- LoadingIndicator.svelte
- MediaQuery.svelte
- NavigationSidebar.svelte
- Scripts.svelte
- SidebarContent.svelte
- TagInput.svelte
- metadata-sidebar.ts
- quick-add.ts
- bookmarks.ts
- fetchBookmarkMetadata.ts
- generate-tts.ts
- category.svelte.ts
- bookmarks.svelte.ts
- bookmarkSearch.svelte.ts
- feedEntries.svelte.ts
- feeds.svelte.ts
- loading.ts
- ui.svelte.ts
- global.css
- summary-worker.js
- translate-worker.js
- tts-worker.js
- utils.js
- whisper-worker.js
- index.ts
- zod.ts
- clipboard.ts
- context.ts
- countries.ts
- documentVisibility.ts
- form-action.ts
- keyboard.ts
- logger.ts
- portal.svelte
- text.ts
- auth-client.ts
- prisma.ts
- utils.ts
- +page.server.ts
- +page.svelte
- +page.server.ts
- +page.svelte
- FilterBar.svelte
- +page.server.ts
- +page.svelte
- data-table-actions.svelte
- +page.server.ts
- +page.svelte
- FilterBar.svelte
- summarization.svelte.ts
- tts.svelte.ts
- AboutSection.svelte
- DeleteDialog.svelte
- feed-data-table-actions.svelte
- FeedsSection.svelte
- UserSection.svelte
- chrome.ts
- index.ts
- pocket.ts
- +page.server.ts
- +page.svelte
- utils.ts
- +page.server.ts
- +page.svelte
- data-table-actions.svelte
- +layout.server.ts
- +layout.svelte
- +page.server.ts
- +page.svelte
- +server.ts
- +server.ts
- +server.ts
- +server.ts
- +server.ts
- +server.ts
- +server.ts
- +server.ts
- +page.server.ts
- +page.svelte
- ProviderIcons.svelte
- +error.svelte
- +layout.server.ts
- +layout.svelte
- ambient.d.ts
- app.d.ts
- app.html
- auth.ts
- hooks.server.ts
- service-worker.ts
- android-chrome-192x192.png
- android-chrome-512x512.png
- apple-touch-icon-180x180.png
- apple-touch-icon.png
- browserconfig.xml
- favicon-16x16.png
- favicon-32x32.png
- favicon.ico
- icon.svg
- maskable-icon-512x512.png
- mstile-144x144.png
- mstile-150x150.png
- mstile-310x150.png
- mstile-310x310.png
- mstile-70x70.png
- pwa-192x192.png
- pwa-512x512.png
- pwa-64x64.png
- safari-pinned-tab.svg
- GT-America-Standard-Black.woff2
- GT-America-Standard-Bold.woff2
- GT-America-Standard-Light.woff2
- GT-America-Standard-Medium.woff2
- GT-America-Standard-Regular.woff2
- GT-America-Standard-Thin.woff2
- manrope-variable.woff2
- confused-travolta.gif
- quickAdd.svg
- 0_menu.webp
- 1_dashboard.webp
- 2_feed.webp
- app0-dark.png
- app1-feed.png
- favicon.ico
- manifest.webmanifest
- robots.txt
- basics.spec.ts
- .env.example
- .mcp.json
- components.json
- package.json
- playwright.config.ts
- prisma.config.ts
- svelte.config.js
- tailwind.config.ts
- tsconfig.json
- vite.config.ts
- flake.lock
- flake.nix
- flake.nix.bak
- nginx-example.conf
- .dockerignore
- .envrc
- .gitignore
- .node-version
- .npmrc
- biome.json
- CLAUDE.md
- docker-compose.local-dev.yml
- docker-compose.storage.yml
- docker-compose.yml
- Dockerfile
- flake.lock
- flake.nix
- LICENSE
- package.json
- pnpm-lock.yaml
- pnpm-workspace.yaml
- README.md
# ์ค์น ๊ฐ์ด๋
git clone https://github.com/ndom91/briefkasten
๊นํ๋ธ์์ ํ๋ก์ ํธ ์ฝ๋ ์ ์ฒด๋ฅผ ๋ด ์ปดํจํฐ๋ก ๋ด๋ ค๋ฐ์ต๋๋ค.
cd briefkasten
๋ฐฉ๊ธ ๋ด๋ ค๋ฐ์ ํ๋ก์ ํธ ํด๋ ์์ผ๋ก ์ด๋ํฉ๋๋ค.
2. Docker
์ฌ์ ์ถ์ฒ- Git GitHub์์ ํ๋ก์ ํธ ์ฝ๋๋ฅผ ๋ด๋ ค๋ฐ์ผ๋ ค๋ฉด ํ์ํฉ๋๋ค.
- Docker Desktop ์ปจํ ์ด๋๋ฅผ ๋น๋ํ๊ณ ์คํํ๋ ค๋ฉด ํ์ํฉ๋๋ค. ์ค์น ํ ์คํํด์ ๋ฐฑ๊ทธ๋ผ์ด๋์ ์ผ๋์ธ์.
docker compose up -d
์ ์๋ ๋ชจ๋ ์ปจํ ์ด๋(์๋ฒ, DB ๋ฑ)๋ฅผ ํ ๋ฒ์ ๋น๋ํ๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํฉ๋๋ค.
docker compose -f docker-compose.yml -f docker-compose.storage.yml up -d
compose ์ค์ ํ์ผ์ ์ ์๋ ์๋น์ค๋ค์ ๋์์ผ๋ก ๋ช ๋ น์ ์คํํฉ๋๋ค.
docker compose -f docker-compose.local-dev.yml up -d
compose ์ค์ ํ์ผ์ ์ ์๋ ์๋น์ค๋ค์ ๋์์ผ๋ก ๋ช ๋ น์ ์คํํฉ๋๋ค.
docker compose exec -T database \
compose ์ค์ ํ์ผ์ ์ ์๋ ์๋น์ค๋ค์ ๋์์ผ๋ก ๋ช ๋ น์ ์คํํฉ๋๋ค.
์ด ๋ ํฌ์ README์ ์ ํ ์ค์ ๋ช ๋ น์ด๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์์ต๋๋ค.
3. Node.js
์ฌ์$ pnpm install
package.json์ ๋ช ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ด๋ ค๋ฐ์ ์ค์นํฉ๋๋ค.
$ pnpm db:deploy
์ด ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ ๊ทธ๋๋ก ์ ๋ ฅํด ์คํํ์ธ์.
$ pnpm dev
๊ฐ๋ฐ/์คํ ์๋ฒ๋ฅผ ์ผญ๋๋ค.
$ pnpm build
์ด ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ ๊ทธ๋๋ก ์ ๋ ฅํด ์คํํ์ธ์.
$ pnpm start
๊ฐ๋ฐ/์คํ ์๋ฒ๋ฅผ ์ผญ๋๋ค.
์ด ๋ ํฌ์ README์ ์ ํ ์ค์ ๋ช ๋ น์ด๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์์ต๋๋ค.
