Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
DATABASE_URL="postgresql://unsend:password@localhost:54320/unsend"
DATABASE_URL="postgresql://usesend:password@localhost:54320/usesend"
REDIS_URL="redis://localhost:6379"


Expand All @@ -17,7 +17,7 @@ AWS_SNS_ENDPOINT="http://localhost:3003/api/sns"

NEXTAUTH_SECRET=""

FROM_EMAIL="hello@unsend.dev"
FROM_EMAIL="hello@usesend.com"

API_RATE_LIMIT=2

Expand Down
6 changes: 3 additions & 3 deletions .env.selfhost.example
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ REDIS_URL="redis://redis:6379"
# Postgres - required for docker-compose, not needed for just docker
POSTGRES_USER="postgres"
POSTGRES_PASSWORD="postgres"
POSTGRES_DB="unsend"
POSTGRES_DB="usesend"
# Postgres - required
DATABASE_URL="postgresql://postgres:postgres@postgres:5432/unsend"
DATABASE_URL="postgresql://postgres:postgres@postgres:5432/usesend"

# NextAuth - required
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET=

#SMTP
SMTP_HOST=smtp.mailtrap.io # Example SMTP host
SMTP_USER= "unsend" # Example SMTP user
SMTP_USER= "usesend" # Example SMTP user

## Auth providers any one is required
# GitHub login - required
Expand Down
2 changes: 1 addition & 1 deletion .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/** @type {import("eslint").Linter.Config} */
module.exports = {
ignorePatterns: ["apps/**", "packages/**"],
extends: ["@unsend/eslint-config/library.js"],
extends: ["@usesend/eslint-config/library.js"],

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Rebrand extends path looks good; verify package availability.

Ensure @usesend/eslint-config is published/installed and version-pinned consistently across the monorepo.

Run to confirm install/lock:


🏁 Script executed:

#!/bin/bash
pnpm -s ls @usesend/eslint-config || npm ls @usesend/eslint-config

Length of output: 449


Pin @usesend/eslint-config to a released version
The workspace dependency is currently "workspace:*" and triggers npm ELSPROBLEMS; update all package.json entries (root and sub-packages) to the actual semver of @usesend/eslint-config (after publishing to the registry) to ensure consistent installs.

🤖 Prompt for AI Agents
.eslintrc.js around line 5: the project currently references the workspace
version of @usesend/eslint-config which causes npm ELSPROBLEMS; after publishing
the package to the registry, update all package.json entries (root and every
sub-package) to replace "workspace:*" with the published semver (e.g. "1.2.3"),
run npm install to refresh node_modules and update lockfile, and search the repo
for any remaining "workspace:*" references to ensure all instances are pinned to
the released version.

parser: "@typescript-eslint/parser",
parserOptions: {
project: true,
Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ body:
id: kind
attributes:
label: Self hosted or Cloud?
description: Does this happen on app.unsend.dev or on your own instance?
description: Does this happen on app.usesend.com or on your own instance?
options:
- Cloud
- Self hosted
Expand All @@ -41,4 +41,4 @@ body:
options:
- Firefox
- Chrome (or chrome based like Brave, Arc, etc)
- Safari
- Safari
70 changes: 35 additions & 35 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- warp-ubuntu-latest-x64-2x
- warp-ubuntu-latest-arm64-2x
app:
- name: unsend
- name: usesend
dockerfile: ./docker/Dockerfile
context: .
- name: smtp-proxy
Expand Down Expand Up @@ -65,24 +65,24 @@ jobs:
docker build \
-f "$DOCKER_FILE" \
--progress=plain \
-t "unsend/$APP-$BUILD_PLATFORM:latest" \
-t "unsend/$APP-$BUILD_PLATFORM:$GIT_SHA" \
-t "unsend/$APP-$BUILD_PLATFORM:$APP_VERSION" \
-t "ghcr.io/unsend-dev/$APP-$BUILD_PLATFORM:latest" \
-t "ghcr.io/unsend-dev/$APP-$BUILD_PLATFORM:$GIT_SHA" \
-t "ghcr.io/unsend-dev/$APP-$BUILD_PLATFORM:$APP_VERSION" \
-t "usesend/$APP-$BUILD_PLATFORM:latest" \
-t "usesend/$APP-$BUILD_PLATFORM:$GIT_SHA" \
-t "usesend/$APP-$BUILD_PLATFORM:$APP_VERSION" \
-t "ghcr.io/usesend/$APP-$BUILD_PLATFORM:latest" \
-t "ghcr.io/usesend/$APP-$BUILD_PLATFORM:$GIT_SHA" \
-t "ghcr.io/usesend/$APP-$BUILD_PLATFORM:$APP_VERSION" \
"$CONTEXT"

- name: Push the docker image to DockerHub
run: docker push --all-tags "unsend/$APP-$BUILD_PLATFORM"
run: docker push --all-tags "usesend/$APP-$BUILD_PLATFORM"
env:
BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-2x' && 'arm64' || 'amd64' }}
APP: ${{ matrix.app.name }}
DOCKER_FILE: ${{ matrix.app.dockerfile }}
CONTEXT: ${{ matrix.app.context }}

- name: Push the docker image to GitHub Container Registry
run: docker push --all-tags "ghcr.io/unsend-dev/$APP-$BUILD_PLATFORM"
run: docker push --all-tags "ghcr.io/usesend/$APP-$BUILD_PLATFORM"
env:
BUILD_PLATFORM: ${{ matrix.os == 'warp-ubuntu-latest-arm64-2x' && 'arm64' || 'amd64' }}
APP: ${{ matrix.app.name }}
Expand Down Expand Up @@ -117,49 +117,49 @@ jobs:
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
GIT_SHA="$(git rev-parse HEAD)"

for APP_NAME in unsend smtp-proxy; do
for APP_NAME in usesend smtp-proxy; do
docker manifest create \
unsend/$APP_NAME:latest \
--amend unsend/$APP_NAME-amd64:latest \
--amend unsend/$APP_NAME-arm64:latest
usesend/$APP_NAME:latest \
--amend usesend/$APP_NAME-amd64:latest \
--amend usesend/$APP_NAME-arm64:latest

docker manifest create \
unsend/$APP_NAME:$GIT_SHA \
--amend unsend/$APP_NAME-amd64:$GIT_SHA \
--amend unsend/$APP_NAME-arm64:$GIT_SHA
usesend/$APP_NAME:$GIT_SHA \
--amend usesend/$APP_NAME-amd64:$GIT_SHA \
--amend usesend/$APP_NAME-arm64:$GIT_SHA

docker manifest create \
unsend/$APP_NAME:$APP_VERSION \
--amend unsend/$APP_NAME-amd64:$APP_VERSION \
--amend unsend/$APP_NAME-arm64:$APP_VERSION
usesend/$APP_NAME:$APP_VERSION \
--amend usesend/$APP_NAME-amd64:$APP_VERSION \
--amend usesend/$APP_NAME-arm64:$APP_VERSION

docker manifest push unsend/$APP_NAME:latest
docker manifest push unsend/$APP_NAME:$GIT_SHA
docker manifest push unsend/$APP_NAME:$APP_VERSION
docker manifest push usesend/$APP_NAME:latest
docker manifest push usesend/$APP_NAME:$GIT_SHA
docker manifest push usesend/$APP_NAME:$APP_VERSION
done

- name: Create and push GitHub Container Registry manifest
run: |
APP_VERSION="$(git name-rev --tags --name-only $(git rev-parse HEAD) | head -n 1 | sed 's/\^0//')"
GIT_SHA="$(git rev-parse HEAD)"

for APP_NAME in unsend smtp-proxy; do
for APP_NAME in usesend smtp-proxy; do
docker manifest create \
ghcr.io/unsend-dev/$APP_NAME:latest \
--amend ghcr.io/unsend-dev/$APP_NAME-amd64:latest \
--amend ghcr.io/unsend-dev/$APP_NAME-arm64:latest
ghcr.io/usesend/$APP_NAME:latest \
--amend ghcr.io/usesend/$APP_NAME-amd64:latest \
--amend ghcr.io/usesend/$APP_NAME-arm64:latest

docker manifest create \
ghcr.io/unsend-dev/$APP_NAME:$GIT_SHA \
--amend ghcr.io/unsend-dev/$APP_NAME-amd64:$GIT_SHA \
--amend ghcr.io/unsend-dev/$APP_NAME-arm64:$GIT_SHA
ghcr.io/usesend/$APP_NAME:$GIT_SHA \
--amend ghcr.io/usesend/$APP_NAME-amd64:$GIT_SHA \
--amend ghcr.io/usesend/$APP_NAME-arm64:$GIT_SHA

docker manifest create \
ghcr.io/unsend-dev/$APP_NAME:$APP_VERSION \
--amend ghcr.io/unsend-dev/$APP_NAME-amd64:$APP_VERSION \
--amend ghcr.io/unsend-dev/$APP_NAME-arm64:$APP_VERSION
ghcr.io/usesend/$APP_NAME:$APP_VERSION \
--amend ghcr.io/usesend/$APP_NAME-amd64:$APP_VERSION \
--amend ghcr.io/usesend/$APP_NAME-arm64:$APP_VERSION

docker manifest push ghcr.io/unsend-dev/$APP_NAME:latest
docker manifest push ghcr.io/unsend-dev/$APP_NAME:$GIT_SHA
docker manifest push ghcr.io/unsend-dev/$APP_NAME:$APP_VERSION
docker manifest push ghcr.io/usesend/$APP_NAME:latest
docker manifest push ghcr.io/usesend/$APP_NAME:$GIT_SHA
docker manifest push ghcr.io/usesend/$APP_NAME:$APP_VERSION
done
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
## Coding Style & Naming Conventions

- TypeScript-first; 2-space indent; semicolons enabled by Prettier.
- Linting: `@unsend/eslint-config`; run `pnpm lint` before PRs.
- Linting: `@usesend/eslint-config`; run `pnpm lint` before PRs.
- Formatting: Prettier 3; run `pnpm format`.
- Files: React components PascalCase (e.g., `AppSideBar.tsx`); folders kebab/lowercase.
- Paths (web): use alias `~/` for src imports (e.g., `import { x } from "~/utils/x"`).
Expand Down
53 changes: 0 additions & 53 deletions CLAUDE.md

This file was deleted.

26 changes: 14 additions & 12 deletions CONTRIBUTION.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 🤝 Contributing to Unsend
# 🤝 Contributing to useSend

Thanks for your interest in contributing to **Unsend**! We’re an open-source email infrastructure platform, and we’d love your help to make it even better. This guide will walk you through how to get started, set up the project locally, and submit contributions.
Thanks for your interest in contributing to **useSend**! We’re an open-source email infrastructure platform, and we’d love your help to make it even better. This guide will walk you through how to get started, set up the project locally, and submit contributions.

---

Expand All @@ -9,7 +9,7 @@ Thanks for your interest in contributing to **Unsend**! We’re an open-source e
All contributions begin with setting up the project locally. Follow the steps below to get started.

📖 **Refer to the full setup guide:**
[https://docs.unsend.dev/get-started/local](https://docs.unsend.dev/get-started/local)
[https://docs.usesend.com/get-started/local](https://docs.usesend.com/get-started/local)

### ⚙️ Prerequisites

Expand All @@ -28,8 +28,8 @@ You’ll need:
### 1. Fork & Clone

```bash
git clone https://github.com/YOUR-USERNAME/unsend.git
cd unsend
git clone https://github.com/YOUR-USERNAME/usesend.git
cd usesend
```

### 2. Install Dependencies
Expand Down Expand Up @@ -57,8 +57,9 @@ openssl rand -base64 32

### 4. GitHub OAuth (Optional for Dev)

Set up a GitHub OAuth App:
- Homepage: `http://localhost:3000/login`
Set up a GitHub OAuth App:

- Homepage: `http://localhost:3000/login`
- Callback: `http://localhost:3000/api/auth/callback/github`

Add credentials to `.env`:
Expand Down Expand Up @@ -89,7 +90,7 @@ AWS_SECRET_KEY=your_secret_key
pnpm d
```

- **Dashboard**: [http://localhost:3000](http://localhost:3000)
- **Dashboard**: [http://localhost:3000](http://localhost:3000)
- **Marketing Site**: [http://localhost:3001](http://localhost:3001)

> To test GitHub login, run:
Expand Down Expand Up @@ -147,7 +148,7 @@ apps/

packages/
├── eslint-config # Shared ESLint rules
├── sdk # TypeScript SDK for Unsend REST API
├── sdk # TypeScript SDK for useSend REST API
├── tailwind-config # Shared Tailwind setup
├── typescript-config # Shared tsconfig
├── ui # Shared UI components (buttons, modals, etc.)
Expand All @@ -164,6 +165,7 @@ git checkout -b feat/your-feature
```

2. **Make Your Changes**

- Follow the existing project structure.
- Write clean, modular, and reusable code.
- Formatting is enforced with Prettier.
Expand All @@ -189,8 +191,8 @@ git push origin feat/your-feature
## 💬 Community and Support

- **Discord**: [Join our server](https://discord.gg/BU8n8pJv8S)
- **GitHub Discussions**: [Start a discussion](https://github.com/unsend-dev/unsend/discussions)
- **GitHub Issues**: [Report issues or bugs](https://github.com/unsend-dev/unsend/issues)
- **GitHub Discussions**: [Start a discussion](https://github.com/usesend/usesend/discussions)
- **GitHub Issues**: [Report issues or bugs](https://github.com/usesend/usesend/issues)

---

Expand All @@ -199,6 +201,6 @@ git push origin feat/your-feature
Need help or unsure where to begin? Just ask!

- Chat with us on [Discord](https://discord.gg/BU8n8pJv8S)
- Open an [Issue](https://github.com/unsend-dev/unsend/issues)
- Open an [Issue](https://github.com/usesend/usesend/issues)

We’re excited to see your ideas and contributions! 💌
Loading