refactor: Rename project from Mail0 to 0.email

- Updated docker-compose container names and database names
- Replaced Mail0 references with 0.email in README, ROADMAP, and various source files
- Updated GitHub repository links and references
- Adjusted environment variables and configuration files
- Corrected branding across UI components and documentation
This commit is contained in:
Aj Wazzan
2025-03-06 14:04:44 -08:00
parent 8e2a9d7814
commit de1ed1ea73
17 changed files with 50 additions and 49 deletions

View File

@@ -1,7 +1,7 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-docker-compose
{
"name": "Mail0 Dev Container",
"name": "0.email Dev Container",
"build": {
"dockerfile": "Dockerfile",
"context": "."

View File

@@ -1,6 +1,6 @@
# Contributing to Mail0
# Contributing to 0.email
Thank you for your interest in contributing to Mail0! We're excited to have you join our mission to create an open-source email solution that prioritizes privacy, transparency, and user empowerment.
Thank you for your interest in contributing to 0.email! We're excited to have you join our mission to create an open-source email solution that prioritizes privacy, transparency, and user empowerment.
## Table of Contents
@@ -136,4 +136,4 @@ If you have questions or need help, you can:
---
Thank you for contributing to Mail0! Your efforts help make email more open, private, and user-centric. 🚀
Thank you for contributing to 0.email! Your efforts help make email more open, private, and user-centric. 🚀

View File

@@ -37,7 +37,7 @@ Zero is an open-source email solution that gives users the power to **self-host*
## Why Zero?
Most email services today are either **closed-source**, **data-hungry**, or **too complex to self-host**. Mail0.io is different:
Most email services today are either **closed-source**, **data-hungry**, or **too complex to self-host**. 0.email is different:
**Open-Source** No hidden agendas, fully transparent.
🔒 **Data Privacy First** Your emails, your data. No tracking, no selling, no middlemen.
@@ -271,11 +271,11 @@ Open [http://localhost:3000](http://localhost:3000) with your browser to see the
### Create a new issue
If you spot a problem with the docs, [search if an issue already exists](https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-issues-and-pull-requests#search-by-the-title-body-or-comments). If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/nizzyabi/Mail0/issues/new?template=Blank+issue).
If you spot a problem with the docs, [search if an issue already exists](https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-issues-and-pull-requests#search-by-the-title-body-or-comments). If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/Mail-0/Mail-0/issues/new?template=Blank+issue).
### Solve an issue
Scan through our [existing issues](https://github.com/nizzyabi/Mail0/issues) to find one that interests you. You can narrow down the search using `labels` as filters. For more information, see "[Label reference](https://docs.github.com/en/contributing/collaborating-on-github-docs/label-reference)". As a general rule, we don't assign issues to anyone. If you find an issue to work on, you are welcome to open a PR with a fix.
Scan through our [existing issues](https://github.com/Mail-0/Mail-0/issues) to find one that interests you. You can narrow down the search using `labels` as filters. For more information, see "[Label reference](https://docs.github.com/en/contributing/collaborating-on-github-docs/label-reference)". As a general rule, we don't assign issues to anyone. If you find an issue to work on, you are welcome to open a PR with a fix.
## Pull Request
@@ -291,12 +291,12 @@ When you're finished with the changes, create a pull request, also known as a PR
## License
Mail0.io is licensed under the MIT License. This means you can:
0.email is licensed under the MIT License. This means you can:
✅ Use the software commercially
✅ Modify the source code
✅ Distribute your modifications
✅ Use and modify the software privately
✅ Use the software commercially, as is.
✅ Modify the source code, and
✅ Distribute your modifications, and
✅ Use and modify the software *privately*
The only requirement is that you include the original copyright and license notice in any copy of the software/source.

View File

@@ -1,6 +1,6 @@
# Mail0.io Roadmap 🛤️
# 0.email Roadmap 🛤️
This document outlines the development roadmap for Mail0.io. Our vision is to create a powerful, user-friendly, and privacy-focused email experience.
This document outlines the development roadmap for 0.email. Our vision is to create a powerful, user-friendly, and privacy-focused email experience.
## Current Development Focus

View File

@@ -1,6 +1,6 @@
NEXT_PUBLIC_APP_URL=http://localhost:3000
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/mail0"
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/zerodotemail"
# Change this to a random string, use `openssl rand -hex 32` to generate a 32 character string
BETTER_AUTH_SECRET=my-better-auth-secret

View File

@@ -53,7 +53,7 @@ export async function sendEmail({
const domain = fromEmail.split("@")[1];
const randomPart = Math.random().toString(36).substring(2);
const timestamp = Date.now();
const messageId = `<${timestamp}.${randomPart}.mail0@${domain}>`;
const messageId = `<${timestamp}.${randomPart}.zerodotemail@${domain}>`;
const date = new Date().toUTCString();
const boundary = `----=_NextPart_${Date.now().toString(36)}_${Math.random().toString(36).substr(2, 9)}`;
@@ -92,7 +92,7 @@ export async function sendEmail({
: []),
// Security headers
"X-Mailer: Mail0",
"X-Mailer: zerodotemail",
`X-Originating-IP: [PRIVATE]`,
`X-Priority: 3`,
`X-MSMail-Priority: Normal`,

View File

@@ -69,7 +69,7 @@ export default function SignUp() {
<div className="flex h-dvh w-screen items-center justify-center bg-background">
<Card className="w-full max-w-md border-none shadow-none">
<CardHeader className="py-5">
<CardTitle className="text-center">Create your Mail0 account</CardTitle>
<CardTitle className="text-center">Create your 0.email account</CardTitle>
<p className="text-center text-sm text-gray-500 dark:text-zinc-400">
Create an account to continue
</p>

View File

@@ -203,7 +203,7 @@ export default function OpenPage() {
const dateStr = date.toISOString().split("T")[0];
const dayCommits = commitsData.filter((commit: { commit: { author: { date: string } } }) =>
commit.commit.author.date.startsWith(dateStr),
commit.commit.author.date.startsWith(dateStr ?? ''),
).length;
const dayIndex = i + 1;
@@ -232,7 +232,7 @@ export default function OpenPage() {
const dateStr = date.toISOString().split("T")[0];
const dayCommits = commitsData.filter((commit: { commit: { author: { date: string } } }) =>
commit.commit.author.date.startsWith(dateStr),
commit.commit.author.date.startsWith(dateStr ?? ''),
).length;
const commits = dayCommits || Math.floor(Math.random() * 5) + 1;
@@ -325,14 +325,14 @@ export default function OpenPage() {
<div className="flex items-center gap-2">
<Image
src="/black-icon.svg"
alt="Mail0 Logo"
alt="0.email Logo"
width={32}
height={32}
className="dark:hidden"
/>
<Image
src="/white-icon.svg"
alt="Mail0 Logo"
alt="0.email Logo"
width={32}
height={32}
className="hidden dark:block"
@@ -475,7 +475,7 @@ export default function OpenPage() {
Stars:
</span>
<span className="font-medium text-neutral-900 dark:text-white">
{payload[0].value}
{payload[0]?.value}
</span>
</div>
<div className="flex items-center gap-2">
@@ -484,7 +484,7 @@ export default function OpenPage() {
Forks:
</span>
<span className="font-medium text-neutral-900 dark:text-white">
{payload[1].value}
{payload[1]?.value}
</span>
</div>
</div>
@@ -549,7 +549,7 @@ export default function OpenPage() {
Commits:
</span>
<span className="font-medium text-neutral-900 dark:text-white">
{payload[0].value}
{payload[0]?.value}
</span>
</div>
<div className="flex items-center gap-2">
@@ -558,7 +558,7 @@ export default function OpenPage() {
Issues:
</span>
<span className="font-medium text-neutral-900 dark:text-white">
{payload[1].value}
{payload[1]?.value}
</span>
</div>
<div className="flex items-center gap-2">
@@ -567,7 +567,7 @@ export default function OpenPage() {
PRs:
</span>
<span className="font-medium text-neutral-900 dark:text-white">
{payload[2].value}
{payload[2]?.value}
</span>
</div>
</div>
@@ -604,7 +604,7 @@ export default function OpenPage() {
<h1 className="text-3xl font-semibold tracking-tight text-neutral-900/80 dark:text-white">
Core Team
</h1>
<p className="mt-2 text-muted-foreground">Meet the people behind Mail0</p>
<p className="mt-2 text-muted-foreground">Meet the people behind 0.email</p>
</div>
<div className="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3">
@@ -827,7 +827,7 @@ export default function OpenPage() {
cursor={{ fill: "rgb(0 0 0 / 0.05)" }}
content={({ active, payload }) => {
if (active && payload && payload.length) {
const data = payload[0].payload;
const data = payload[0]?.payload;
return (
<div className="rounded-lg border border-neutral-200 bg-white p-3 shadow-lg dark:border-neutral-800 dark:bg-neutral-900">
<div className="flex items-center gap-2">

View File

@@ -93,8 +93,8 @@ const sections = [
title: "Overview",
content: (
<p>
Mail0.io is an open-source email solution that enables users to self-host their email
service or integrate with external email providers. By using Mail0.io, you agree to these
0.email is an open-source email solution that enables users to self-host their email
service or integrate with external email providers. By using 0.email, you agree to these
terms.
</p>
),
@@ -106,7 +106,7 @@ const sections = [
<div>
<h3 className="mb-3 text-xl font-medium text-card-foreground">Self-Hosted Service</h3>
<ul className="ml-4 list-disc space-y-2">
<li>Mail0.io provides software that users can deploy on their own infrastructure</li>
<li>0.email provides software that users can deploy on their own infrastructure</li>
<li>Users are responsible for their own hosting, maintenance, and compliance</li>
<li>The software is provided &quot;as is&quot; under the MIT License</li>
</ul>
@@ -116,7 +116,7 @@ const sections = [
External Email Integration
</h3>
<ul className="ml-4 list-disc space-y-2">
<li>Mail0.io can integrate with third-party email providers</li>
<li>0.email can integrate with third-party email providers</li>
<li>Users must comply with third-party providers&apos; terms of service</li>
<li>We are not responsible for third-party service disruptions</li>
</ul>
@@ -143,7 +143,7 @@ const sections = [
title: "Software License",
content: (
<div className="mt-4 space-y-3 text-muted-foreground">
<p>Mail0.io is licensed under the MIT License:</p>
<p>0.email is licensed under the MIT License:</p>
<ul className="ml-4 list-disc space-y-2">
<li>Users can freely use, modify, and distribute the software</li>
<li>The software comes with no warranties</li>

View File

@@ -90,7 +90,7 @@ export default function DeveloperPage() {
<div className="space-y-4">
<h1 className="text-2xl font-bold sm:text-3xl">Developer Resources</h1>
<p className="text-base text-muted-foreground sm:text-lg">
Everything you need to build with Mail0&apos;s APIs and tools.
Everything you need to build with 0.email&apos;s APIs and tools.
</p>
</div>
</div>

View File

@@ -184,7 +184,7 @@ export function CommandPalette({ children }: { children: React.ReactNode }) {
</CommandItem>
<CommandItem
onSelect={() =>
runCommand(() => window.open("https://github.com/nizzyabi/mail0", "_blank"))
runCommand(() => window.open("https://github.com/Mail-0/Mail-0", "_blank"))
}
>
<ArrowUpRight size={16} strokeWidth={2} className="opacity-60" aria-hidden="true" />

View File

@@ -24,7 +24,7 @@ export default function Navbar() {
<div className="mx-auto flex w-full items-center justify-between p-4 px-7 lg:px-20">
<Image
src="/white-icon.svg"
alt="Mail0"
alt="zerodotemail"
className="h-9 w-9 invert dark:invert-0"
width={180}
height={180}
@@ -49,7 +49,7 @@ export default function Navbar() {
<div className="flex items-center justify-between px-3">
<Image
src="/white-icon.svg"
alt="Mail0"
alt="zerodotemail"
className="h-9 w-9 invert dark:invert-0"
width={180}
height={180}

View File

@@ -97,14 +97,14 @@ export function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
<div>
<Image
src="/ai.svg"
alt="Mail0 Logo"
alt="0.email Logo"
width={28}
height={28}
className="hidden transition-transform duration-300 hover:rotate-90 dark:block"
/>
<Image
src="/ai.svg"
alt="Mail0 Logo"
alt="0.email Logo"
width={28}
height={28}
className="transition-transform duration-300 hover:rotate-90 dark:hidden"

View File

@@ -137,7 +137,7 @@ export function NavUser() {
</div>
</DropdownMenuItem>
<DropdownMenuItem
onClick={() => window.open("https://github.com/nizzyabi/mail0", "_blank")}
onClick={() => window.open("https://github.com/Mail-0/Mail-0", "_blank")}
>
<div className="flex cursor-pointer items-center gap-2 text-[13px]">
<Book size={16} strokeWidth={2} className="opacity-60" aria-hidden="true" />

View File

@@ -52,7 +52,7 @@ const options = {
requireEmailVerification: true,
sendResetPassword: async ({ user, url }) => {
await resend.emails.send({
from: "Mail0 <onboarding@zero.io>",
from: "0.email <onboarding@0.email>",
to: user.email,
subject: "Reset your password",
html: `
@@ -71,11 +71,11 @@ const options = {
const verificationUrl = `${process.env.NEXT_PUBLIC_APP_URL}/api/auth/verify-email?token=${token}&callbackURL=/settings/connections`;
await resend.emails.send({
from: "Mail0 <onboarding@zero.io>",
from: "0.email <onboarding@0.email>",
to: user.email,
subject: "Verify your Mail0 account",
subject: "Verify your 0.email account",
html: `
<h2>Verify Your Mail0 Account</h2>
<h2>Verify Your 0.email Account</h2>
<p>Click the link below to verify your email:</p>
<a href="${verificationUrl}">${verificationUrl}</a>
`,

View File

@@ -10,6 +10,7 @@ const nextConfig: NextConfig = {
remotePatterns: [
{ protocol: "https", hostname: "lh3.googleusercontent.com" },
{ protocol: "https", hostname: "mail0.io" },
{ protocol: "https", hostname: "0.email" },
{ protocol: "https", hostname: "avatars.githubusercontent.com" },
],
},

View File

@@ -1,12 +1,12 @@
services:
db:
container_name: mail0-db
container_name: zerodotemail-db
image: postgres:17
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: mail0
POSTGRES_DB: zerodotemail
PGDATA: /var/lib/postgresql/data/pgdata
ports:
- 5432:5432
@@ -14,7 +14,7 @@ services:
- postgres-data:/var/lib/postgresql/data
valkey:
container_name: mail0-redis
container_name: zerodotemail-redis
image: docker.io/bitnami/valkey:8.0
environment:
- ALLOW_EMPTY_PASSWORD=yes
@@ -25,7 +25,7 @@ services:
- valkey-data:/bitnami/valkey/data
upstash-proxy:
container_name: mail0-upstash-proxy
container_name: zerodotemail-upstash-proxy
image: hiett/serverless-redis-http:latest
environment:
SRH_MODE: env