LetterSpace
Self-hosted open source newsletter platform for managing subscribers and sending campaigns
파일 탐색기
최종 버전 다운로드 (.zip)- general.mdc
- refactor.mdc
- bug_report.md
- feature_request.md
- docker.yaml
- CONTRIBUTING.md
- dependabot.yml
- PULL_REQUEST_TEMPLATE.md
- settings.json
- $DbEnums.d.ts
- countDbSize.d.ts
- countDbSize.edge.js
- countDbSize.edge.mjs
- countDbSize.js
- countDbSize.mjs
- countDistinctRecipients.d.ts
- countDistinctRecipients.edge.js
- countDistinctRecipients.edge.mjs
- countDistinctRecipients.js
- countDistinctRecipients.mjs
- countDistinctRecipientsInTimeRange.d.ts
- countDistinctRecipientsInTimeRange.edge.js
- countDistinctRecipientsInTimeRange.edge.mjs
- countDistinctRecipientsInTimeRange.js
- countDistinctRecipientsInTimeRange.mjs
- index.d.ts
- index.edge.js
- index.edge.mjs
- index.js
- index.mjs
- subscriberGrowthQuery.d.ts
- subscriberGrowthQuery.edge.js
- subscriberGrowthQuery.edge.mjs
- subscriberGrowthQuery.js
- subscriberGrowthQuery.mjs
- migration.sql
- migration.sql
- migration.sql
- migration.sql
- migration.sql
- migration.sql
- migration.sql
- migration.sql
- migration.sql
- migration.sql
- migration.sql
- migration.sql
- migration_lock.toml
- countDbSize.sql
- countDistinctRecipients.sql
- countDistinctRecipientsInTimeRange.sql
- subscriberGrowthQuery.sql
- schema.prisma
- seed.ts
- middleware.ts
- server.ts
- mutation.ts
- query.ts
- router.ts
- cleanupWebhookLogs.ts
- cron.ts
- cron.utils.ts
- dailyMaintenance.ts
- processQueuedCampaigns.ts
- sendMessages.ts
- query.ts
- router.ts
- LinkTracker.ts
- Mailer.ts
- mutation.ts
- query.ts
- router.ts
- mutation.ts
- query.ts
- router.ts
- mutation.ts
- query.ts
- router.ts
- mutation.ts
- query.ts
- router.ts
- query.ts
- router.ts
- mutation.ts
- query.ts
- router.ts
- mutation.ts
- query.ts
- router.ts
- mutation.ts
- query.ts
- router.ts
- auth.ts
- logger.ts
- message-id.test.ts
- message-id.ts
- message-status.ts
- placeholder-parser.test.ts
- placeholder-parser.ts
- pProps.ts
- prisma.ts
- schemas.ts
- token.ts
- authorization.ts
- handler.ts
- mutation.ts
- processor.ts
- query.ts
- router.ts
- transformer.ts
- types.ts
- app.ts
- constants.ts
- index.ts
- shared.ts
- swagger.ts
- trpc.ts
- types.ts
- newsletter.html
- verificationEmail.html
- create-subscriber.test.ts
- delete-subscriber.test.ts
- get-subscriber.test.ts
- get-subscribers.test.ts
- update-subscriber.test.ts
- auth.test.ts
- list.ts
- user.ts
- request.ts
- reset-db.ts
- setup.ts
- user.test.ts
- .env.example
- .env.test
- .gitignore
- CLAUDE.md
- entrypoint.sh
- eslint.config.mjs
- package.json
- tsconfig.build.json
- tsconfig.json
- vitest.config.ts
- android-chrome-192x192.png
- android-chrome-512x512.png
- apple-touch-icon.png
- cover.png
- favicon-16x16.png
- favicon-32x32.png
- file.svg
- globe.svg
- next.svg
- vercel.svg
- window.svg
- _meta.ts
- page.mdx
- page.mdx
- page.mdx
- _meta.ts
- page.mdx
- page.mdx
- todo.mdx
- page.mdx
- _meta.ts
- page.mdx
- _meta.ts
- favicon.ico
- globals.css
- layout.tsx
- page.mdx
- analytics.tsx
- index.ts
- webhook-events-reference.tsx
- mdx-components.tsx
- .gitignore
- eslint.config.mjs
- next.config.ts
- package.json
- postcss.config.mjs
- README.md
- tailwind.config.ts
- tsconfig.json
- vercel.json
- android-chrome-192x192.png
- android-chrome-512x512.png
- apple-touch-icon.png
- cover.png
- favicon-16x16.png
- favicon-32x32.png
- github.svg
- x.svg
- favicon.ico
- globals.css
- layout.tsx
- page.tsx
- analytics.tsx
- features.tsx
- footer.tsx
- header.tsx
- hero.tsx
- constants.ts
- .env.example
- .gitignore
- eslint.config.mjs
- next.config.ts
- package.json
- postcss.config.cjs
- README.md
- tailwind.config.ts
- tsconfig.json
- vercel.json
- android-chrome-192x192.png
- android-chrome-512x512.png
- apple-touch-icon-180x180.png
- apple-touch-icon.png
- favicon-16x16.png
- favicon-32x32.png
- favicon.ico
- maskable-icon-512x512.png
- pwa-192x192.png
- pwa-512x512.png
- pwa-64x64.png
- react.svg
- index.ts
- state.ts
- theme-context.ts
- theme-provider.tsx
- alert-dialog-confirmation.tsx
- card-skeleton.tsx
- centered-loader.tsx
- copy-button.tsx
- email-preview.tsx
- error-boundary.tsx
- form-controlled-input.tsx
- index.ts
- letter-space-text.tsx
- loader.tsx
- monaco-editor.tsx
- pagination.tsx
- stat-card.tsx
- theme-toggle.tsx
- webhook-events-reference.tsx
- webhook-url-display.tsx
- with-tooltip.tsx
- index.ts
- use-update-check.ts
- useDebounce.ts
- usePagination.ts
- useSession.ts
- useTheme.ts
- index.ts
- login.tsx
- page.tsx
- signup.tsx
- index.ts
- page.tsx
- editor-tab.tsx
- settings-tab.tsx
- campaign-actions.tsx
- context.tsx
- editor-actions.tsx
- index.ts
- layout.tsx
- loading.tsx
- not-found.tsx
- page.tsx
- schema.ts
- stats.tsx
- useCampaignContext.ts
- campaign-search.tsx
- columns.tsx
- index.ts
- page.tsx
- dashboard.tsx
- index.ts
- subscriber-growth-chart.tsx
- columns.tsx
- id-field.tsx
- index.ts
- list-form.tsx
- list-search.tsx
- page.tsx
- update-list-form.tsx
- columns.tsx
- index.ts
- message-actions.tsx
- message-error-dialog.tsx
- message-id-cell.tsx
- message-preview-dialog.tsx
- message-search.tsx
- message-status-badge.tsx
- message-status-filter.tsx
- page.tsx
- api-keys.tsx
- email-delivery-settings.tsx
- general-settings.tsx
- index.ts
- organization-settings.tsx
- page.tsx
- profile-settings.tsx
- smtp-settings.tsx
- test-smtp-dialog.tsx
- webhook-details.tsx
- webhook-form.tsx
- webhook-settings.tsx
- list-cell.tsx
- add-subscriber-dialog.tsx
- columns.tsx
- delete-subscriber-alert-dialog.tsx
- edit-subscriber-dialog.tsx
- index.ts
- page.tsx
- schemas.ts
- subscriber-details-dialog.tsx
- subscriber-search.tsx
- subscriber-stats.tsx
- types.ts
- columns.tsx
- create-template-form.tsx
- index.ts
- page.tsx
- template-search.tsx
- update-template-dialog.tsx
- update-template-form.tsx
- view-template-dialog.tsx
- index.ts
- layout.tsx
- index.ts
- page.tsx
- index.ts
- not-found.tsx
- unsubscribe.tsx
- verify-email.tsx
- date.ts
- index.ts
- toastError.ts
- app.tsx
- constants.ts
- index.css
- main.tsx
- trpc-provider.tsx
- trpc.ts
- types.ts
- vite-env.d.ts
- .env.example
- .env.test
- .gitignore
- CLAUDE.md
- eslint.config.js
- index.html
- package.json
- postcss.config.cjs
- README.md
- tailwind.config.ts
- tsconfig.app.json
- tsconfig.json
- tsconfig.node.json
- vite.config.ts
- base.js
- next.js
- package.json
- react-internal.js
- README.md
- .gitignore
- eslint.config.mjs
- index.ts
- package.json
- tsconfig.json
- webhook-events-data.ts
- base.json
- nextjs.json
- package.json
- react-library.json
- alert-dialog.tsx
- alert.tsx
- badge.tsx
- button.tsx
- calendar.tsx
- card.tsx
- chart.tsx
- checkbox.tsx
- command.tsx
- data-table.tsx
- dialog.tsx
- dropdown-menu.tsx
- form.tsx
- index.ts
- input.tsx
- label.tsx
- multi-select.tsx
- pagination.tsx
- popover.tsx
- progress.tsx
- radio-group.tsx
- scroll-area.tsx
- select.tsx
- separator.tsx
- sheet.tsx
- sidebar.tsx
- skeleton.tsx
- switch.tsx
- table.tsx
- tabs.tsx
- textarea.tsx
- tooltip.tsx
- index.ts
- use-mobile.tsx
- index.ts
- utils.ts
- index.css
- index.ts
- components.json
- eslint.config.mjs
- package.json
- shadcn-add.sh
- tailwind.config.js
- tsconfig.json
- gen-container-img-tags.ts
- .dockerignore
- .gitignore
- .npmrc
- .prettierignore
- .prettierrc
- CLAUDE.md
- docker-compose.node.yaml
- docker-compose.yaml
- Dockerfile
- Dockerfile.node
- knip.ts
- LICENSE
- package.json
- pnpm-lock.yaml
- pnpm-workspace.yaml
- README.md
- RELEASE_NOTES.md
- tsconfig.json
- turbo.json
# 설치 가이드
1. 코드 내려받기
git clone https://github.com/dcodesdev/LetterSpace
깃허브에서 프로젝트 코드 전체를 내 컴퓨터로 내려받습니다.
cd LetterSpace
방금 내려받은 프로젝트 폴더 안으로 이동합니다.
2. Docker
쉬움 추천사전 준비물
- Git GitHub에서 프로젝트 코드를 내려받으려면 필요합니다.
- Docker Desktop 컨테이너를 빌드하고 실행하려면 필요합니다. 설치 후 실행해서 백그라운드에 켜두세요.
docker compose -f docker-compose.node.yaml up -d --build
compose 설정 파일에 정의된 서비스들을 대상으로 명령을 실행합니다.
터미널에 docker compose ps 를 입력해 컨테이너들이 Up 상태인지 확인하세요. README에 포트 번호가 적혀있다면 브라우저에서 http://localhost:포트번호 로 접속해보세요.
3. Node.js
쉬움사전 준비물
cd apps/backend
이 프로젝트의 관련 파일이 하위 폴더 안에 있어서, 먼저 그 폴더로 이동합니다.
npm install
package.json에 명시된 라이브러리들을 내려받아 설치합니다.
npm start
개발/실행 서버를 켭니다.
명령어 실행 후 터미널에 나타나는 주소(보통 http://localhost:3000 형태)를 브라우저에서 열어보세요.
// repository documentation
Was this content helpful?
(0 ratings)
