mirror of
https://github.com/Mail-0/Zero.git
synced 2026-03-03 02:27:00 +00:00
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:
@@ -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": "."
|
||||
|
||||
6
.github/CONTRIBUTING.md
vendored
6
.github/CONTRIBUTING.md
vendored
@@ -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. 🚀
|
||||
|
||||
16
README.md
16
README.md
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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`,
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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 "as is" 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' 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>
|
||||
|
||||
@@ -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's APIs and tools.
|
||||
Everything you need to build with 0.email's APIs and tools.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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>
|
||||
`,
|
||||
|
||||
@@ -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" },
|
||||
],
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user