- Ever Works Directory Website Template
Ever Works Directory Website Template
Ever Works Directory Website Template
⭐️ What is it?
Welcome to the Ever Works Directory Website Template, a cutting-edge, full-stack directory website solution built with Next.js 15.
This versatile template is an essential component of the Ever Works Platform, offering seamless integration while maintaining the flexibility to function as a standalone solution.
🔗 Links
- Demo: https://demo.ever.works
Project Overview
🧱 Technology Stack and Requirements
- TypeScript
- NodeJs
- Next.js 15 with App Router
- Authentication: Auth.js / Supabase Auth
- ORM: Drizzle
- Supported Databases: Supabase/PostgreSQL/MySQL/SQLite
- Styling: Tailwind CSS
- UI Components: HeroUI React
- Internationalization: next-intl
- Form Validation: Zod
- Notifications/Emails Services: Novu / Resend
- Hosting: Vercel
📄 Project Structure
├── .content/ # Content management directory
│ ├── posts/ # Blog posts
│ ├── categories/ # Category definitions
│ └── assets/ # Media files related to content
├── app/
│ ├── [locale]/ # Internationalized routes
│ ├── api/ # API routes
│ └── auth/ # Authentication pages
├── components/ # Reusable UI components
├── lib/ # Utility functions and config
├── public/ # Static files
└── styles/ # Global styles
Content Management System (.content)
The .content folder acts as a Git-based CMS, synchronized with the repository specified in the DATA_REPOSITORY environment variable.
Folder Structure:
- posts/: Markdown files for blog articles
- Each post has a frontmatter (title, date, author, etc.)
- Supports MDX for interactive content
- Organized by date and category
- categories/: Content organization
- YAML files for category configuration
- Supports nested categories
- Metadata and category relationships
- assets/: Media files related to content
- Images, documents, downloadable resources
- Organized according to content structure
Content Synchronization
Automatic sync via GitHub integration:
- Content is pulled from
DATA_REPOSITORY - Changes are tracked via Git
- Updates occur periodically or on demand
- Requires a valid
GH_TOKENfor private repos
Site Configuration (config.yml)
The .content/config.yml file controls main site settings:
# Basic site settings
company_name: Acme # Company or site name
content_table: false # Enable/disable content table
item_name: Item # Singular name for items
items_name: Items # Plural name for items
copyright_year: 2025 # Footer copyright
# Auth settings
auth:
credentials: true # Email/password login
google: true # Google login
github: true # GitHub login
microsoft: true # Microsoft login
fb: true # Facebook login
x: true # X (Twitter) login
Configuration Options:
- Basic settings
company_name: Your organization's namecontent_table: Enable or disable content tableitem_name/items_name: Custom item labelscopyright
- Auth settings
- Enable/disable OAuth providers
- Use
trueto enable,falseto disable - Configure corresponding OAuth keys
💡 Note: Changes in config.yml are applied after syncing content or restarting the server.
Getting Started
Prerequisites
- Node.js 18.x or higher
- PostgreSQL database (optional)
npmoryarnorpnpmpackage manager
Environment Setup
- Copy the
.env.examplefile to.env.local:
cp .env.example .env.local
- Fill in your environment variables in
.env.local:
Auth Setup
AUTH_SECRET="your-secret-key"
# Generate one with: openssl rand -base64 32
GitHub Integration
Define the data repository
- Fork the repository:
- Visit https://github.com/ever-works/awesome-data
- Click "Fork" to create a copy
- This repo will hold
.contentdata
- Configure GitHub integration:
GH_TOKEN='your-github-token'
DATA_REPOSITORY='https://github.com/ever-works/awesome-data'
💡 Important: The .content folder is created and synced automatically at startup with valid GitHub credentials.
Database Configuration
DATABASE_URL=postgresql://user:password@localhost:5432/db_name
Details
user: PostgreSQL usernamepassword: PostgreSQL passwordlocalhost: Database host5432: Default PostgreSQL portdb_name: Name of your database
⚠️ Security: Never commit .env.local. Keep your secrets safe.
Installation
# Install dependencies
npm install
# or
yarn install
# Set up the database
npm run db:generate
npm run db:migrate
# Start the dev server
npm run dev
The app will be available at http://localhost:3000.
Developer Tools
- Database Studio:
npm run db:studio - Linting:
npm run lint - Type Checking:
tscor during build
Developer Guide
Adding New Features
- Pages: Add in
app/[locale] - API: Create endpoints in
app/api - Components: Add to
components - Database: Edit schema in
lib/db/schema.ts
Internationalization
- Add translations under
messages - Use
useTranslationsin components - Add new locales in config
Authentication
- Configure providers in
auth.config.ts - Protect routes via middleware
- Customize auth pages in
app/[locale]/auth
🔗 Resources
Deployment on Vercel
The easiest way to deploy the app is via the Vercel platform.
Check the Next.js deployment docs.
License
AGPL v3
™️ Trademarks
Ever® is a registered trademark of Ever Co. LTD. Ever® Works™, Ever® Demand™, Ever® Gauzy™, Ever® Teams™ and Ever® OpenSaaS™ are all trademarks of Ever Co. LTD.
The trademarks may only be used with the written permission of Ever Co. LTD. and may not be used to promote or otherwise market competitive products or services.
All other brand and product names are trademarks, registered trademarks, or service marks of their respective holders.
🍺 Contribute
- Please give us a :star: on Github, it helps!
- You are more than welcome to submit feature requests in the separate repo
- Pull requests are always welcome! Please base pull requests against the develop branch and follow the contributing guide.
💪 Thanks to our Contributors
See our contributors list in CONTRIBUTORS.md. You can also view a full list of our contributors tracked by Github.