Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

204 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Evergreeners Logo

Evergreeners

Track your consistency. Grow your legacy.

Evergreeners is a developer-focused habit and contribution tracking application — a digital garden where consistency compounds over time. It helps users visualize daily activity, maintain streaks, and build a lasting record of effort.


✨ Features

  • GitHub-style Contribution Graph: Visualize daily activity using a familiar heatmap.
  • Streak Tracking: Track active streaks and maintain momentum over time.
  • Dark Mode First: Developer-friendly dark UI powered by Tailwind CSS and lucide-react.
  • Authentication: Secure email/password authentication using Better Auth (backend-only).
  • Responsive Design: Optimized for desktop and mobile devices.
  • Backend API: A Fastify server handling authentication, business logic, and data persistence with Drizzle ORM and PostgreSQL.

🧱 Architecture Overview

Browser (React)
   ↓
Fastify API (Backend)
   ↓
Better Auth (Sessions & Users)
   ↓
Drizzle ORM
   ↓
PostgreSQL (Supabase)

Note

Supabase is used strictly as a managed PostgreSQL database. All authentication and application logic live in the Fastify backend.


🛠️ Tech Stack

Frontend

  • Framework: React + Vite
  • Styling: Tailwind CSS
  • UI Components: shadcn/ui
  • Icons: Lucide React
  • State Management: React Hooks & Context

Backend (/server)

  • Server: Fastify
  • Database: PostgreSQL (Supabase)
  • ORM: Drizzle ORM
  • Authentication: Better Auth

🏁 Getting Started

Prerequisites

  • Node.js v18+
  • A Supabase project (PostgreSQL)
  • Git

📦 Installation

1. Clone the Repository

git clone [https://github.com/evergreeners/Evergreeners-web.git](https://github.com/evergreeners/Evergreeners-web.git)
cd evergreeners

2. Frontend Setup

npm install
npm run dev

The frontend will run on http://localhost:5173.

3. Backend Setup

cd server
npm install

Create a .env file inside the server directory:

PORT=3000

# PostgreSQL connection (Supabase)
DATABASE_URL="postgresql://app_user:YOUR_PASSWORD@YOUR_HOST:5432/postgres?sslmode=require"

# Better Auth
BETTER_AUTH_SECRET="your-secure-random-string"
BETTER_AUTH_URL="http://localhost:3000"

Important

Security Notes:

  • Do NOT use the Supabase postgres admin user in production.
  • Create a dedicated database role (e.g. app_user) with limited privileges.
  • Never commit .env files to version control.

4. Database Migration

npm run db:generate
npm run db:migrate

5. Run the Backend

npm run dev

The backend will run on http://localhost:3000.


📂 Project Structure

evergreeners/
├── src/                 # Frontend React code
│   ├── components/      # Reusable UI components
│   ├── pages/           # App pages (Landing, Auth, Dashboard)
│   ├── lib/             # Utilities (auth client, helpers)
│   └── App.tsx
│
├── server/              # Backend (Fastify)
│   ├── src/
│   │   ├── db/          # Drizzle schema & DB connection
│   │   ├── auth.ts      # Better Auth configuration
│   │   └── index.ts     # Server entry point
│   └── drizzle/         # Migration files
│
└── README.md


🚀 Deployment

  • Frontend: Vercel
  • Backend: Railway, Fly.io, or Render
  • Database: Supabase (PostgreSQL)

Ensure production environment variables match your local .env configuration.


🤝 Contributing

  1. Fork the repository.
  2. Create a feature branch: git checkout -b feature/your-feature-name.
  3. Commit your changes: git commit -m "Add your feature".
  4. Push to your branch: git push origin feature/your-feature-name.
  5. Open a Pull Request.

📄 License

This project is open-source and licensed under the MIT License.


💚 Vision

Evergreeners is about showing up every day — not perfection, but persistence. Small actions, done consistently, grow into something meaningful.

Grow steadily. Stay evergreen. 🌲

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages