Skip to content

Commit

Permalink
πŸ’Ž feat(app): initial update
Browse files Browse the repository at this point in the history
  • Loading branch information
blefnk committed Aug 13, 2023
1 parent 4099c7c commit 67a68f4
Show file tree
Hide file tree
Showing 36 changed files with 7,650 additions and 1,424 deletions.
19 changes: 19 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
##=##=##=##=##=##=##=##=##=##=##

root = true

#==# EditorConfig ##=##=##=##=##

[*]
charset = utf-8
indent_size = 2
end_of_line = lf
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
max_line_length = off
trim_trailing_whitespace = false

##=##=##=##=##=##=##=##=##=##=##
6 changes: 6 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ module.exports = {
sourceType: "module",
},
extends: ["next/core-web-vitals"],
rules: {
"@next/next/no-html-link-for-pages": "off",
"react/no-unescaped-entities": "off",
"@next/next/no-img-element": "off",
"react/display-name": "off",
},
},
{
// =================================================================
Expand Down
3 changes: 3 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
}
127 changes: 123 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,134 @@
# Bleverse Relivator: Website Builder
# Bleverse Relivator: Next.js Starter & Website Builder

The ultimate starter for your Next.js projects. Everything has been set up for you. You're not on this journey alone. Move faster than ever. Simply grab it and dive in.
**Crafting the world's most powerful Next.js starter and website builder.**

![GitHub repo size](https://img.shields.io/github/repo-size/blefnk/relivator?style=for-the-badge)
![GitHub language count](https://img.shields.io/github/languages/count/blefnk/relivator?style=for-the-badge)
![GitHub forks](https://img.shields.io/github/forks/blefnk/relivator?style=for-the-badge)

## πŸš€ About the Project

Step into the future with the ultimate Next.js starter. Everything has been set up for you. It's more than just code; it's a journey. You're not on this journey alone. Move faster than ever. We've laid the groundwork; now, grab it, dive in and accelerate your development.

This is our experimental space where we tinkered with the new Next.js app directory. So, while it's all fun and exploration, there might be a few quirks here and there. Stumbled upon something odd or just feeling generous? Reach out to us on Twitter [@bleverse_com](https://x.com/bleverse_com) or raise an issue right here. If you've got some coding magic up your sleeve, contributions are always celebrated! πŸŽ‰

## 🀌 Features

Please visit [the corresponding page](/repo/roadmap.md) to see the full list of features.

## Configure Your App

The app.ts file contains essential configuration used to modify the contents and settings of the website.
The `app.ts` file contains essential configuration used to modify the contents and settings of the website.

- Manage the content displayed on the website.
- Customize various settings, such as disabling theme toggle.
- Manage general site-wide information.

## πŸ”₯ TO-DO Features

- 🌐 Comprehensive offerings of the Next.js app directory.
- πŸ“Š Dive deep into SQL with TypeScript ORM via [**Drizzle ORM**](https://github.com/drizzle-team/drizzle-orm).
- πŸ”’ Keep it tight with Authentication using [**Auth.js**](https://authjs.dev) and [**Lucia**](https://github.com/pilcrowOnPaper/lucia).
- 🌍 Centralized Database magic at [**PlanetScale**](https://planetscale.com).
- ✨ Stunning UI components, all thanks to [**shadcn/ui**](https://github.com/shadcn/ui).
- πŸ“ Share insights with Blogs powered by **MDX** & [**Contentlayer**](https://github.com/contentlayerdev/contentlayer).
- πŸ’² Seamless Subscriptions via [**LemonSqueezy**](https://www.lemonsqueezy.com/).
- 🎨 Styled to impress with **Tailwind CSS**.
- πŸ“‘ Data-fetching streamlined with RSCs & [**tRPC**](https://github.com/trpc/trpc).
- πŸ“§ Email verification and a lot more features to enhance your application!

## ⚠️ Known Issues

A quick snapshot of the roadblocks or nuances as of now:

1. Occasionally, MySQL throws a tantrum about excessive connections. A quick restart of your Next.js app should soothe it.
2. Pricing plans are playing hard-to-get with the database sync.
3. The RBAC feature is still on probation; thorough testing pending.
4. Jury's out on tRPC's performance in RSCs.
5. An [issue with MJML](https://github.com/vercel/next.js/issues/50042) compelled us to house the email functions within the `/pages` directory.

## πŸƒβ€β™‚οΈ Getting Started Locally

Get all dependencies sorted:

```sh
pnpm install
```

Get your environment variables in check:

```sh
cp .env.example .env
```

Let the server magic begin:

```sh
pnpm dev
```

### πŸ“š Setting Up the Database

#### On Your Machine

Hop into MySQL:

```bash
mysql -u root
```

Bring your database to life:

```bash
CREATE DATABASE template;
```

Push your DB schema:

```bash
npx drizzle-kit mysql:push
```

#### 🌐 PlanetScale

Thinking of ditching local? Feel free to fully commit to PlanetScale as your primary database!

### πŸ” Authentication

Setting up GitHub OAuth is a breeze:

1. Visit: `https://github.com/settings/developers`
2. Hit "New OAuth App".
3. Register your callback URL: `http://localhost:3000/api/oauth/github`

### πŸ’Œ Email

Want a sneak peek of your email in dev mode without sending it out? Run:

```bash
npx mailing
```

For the real deal in production, you'll be working with [Resend](resend.com). Grab your API key and verify your domain there.

### πŸ’² Payments

LemonSqueezy powers payments, with subscription syncs via webhooks (`lemonsqueezy/route.ts`). Fancy a local test? Expose the webhook with:

```bash
npx ngrok http 3000
```

Then, register the webhook URL, like `https://abc.eu.ngrok.io/api/lemonsqueezy`, in [LemonSqueezy's webhook settings](https://app.lemonsqueezy.com/settings/webhooks).

### πŸ–ΌοΈ Asset Generation

For a fresh splash of branding, swap `logo-mark.svg` with your logo. Then, run:

```bash
npm run asset-generator
```

## πŸ“« Contributing to Bleverse Relivator

To contribute to Bleverse Relivator, follow these steps:
Expand All @@ -30,6 +141,14 @@ To contribute to Bleverse Relivator, follow these steps:

Or, see the GitHub docs on [how to create a pull request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request).

## 🀝 Collaborators
## πŸ™Œ Kudos to Collaborators

We thank everyone for their contributions to this repository. Please visit [the corresponding page](/repo/contributing/contributors.md) to see the full list of contributors.

## License

Released under the [MIT license](https://github.com/amosbastian/template/blob/main/LICENSE.md).

---

Happy coding! Embark on this coding adventure, learn, iterate, and most importantly – enjoy the process! And remember – this is a space of learning and experimentation. Dive in and enjoy the journey! πŸš€πŸŒŒ
11 changes: 3 additions & 8 deletions next.config.mjs
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
await import("./src/utils/server/env.mjs");
await import("./src/utils/server/app/env.mjs");

/** @type {import('next').NextConfig} */
const config = {
reactStrictMode: true,
swcMinify: true,
eslint: {
ignoreDuringBuilds: true,
},
typescript: {
ignoreBuildErrors: true,
},
experimental: {
// typedRoutes: process.env.NODE_ENV === "development",
serverActions: true,
serverComponentsExternalPackages: ["mysql2"],
},
webpack: (config) => {
config.resolve.fallback = { fs: false };
Expand Down
82 changes: 62 additions & 20 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,16 @@
"edge": "pnpm up --latest && pnpm add -D prettier@2.8.8 && pnpm add lucide-react@0.260.0 next@canary react@canary react-dom@canary"
},
"dependencies": {
"@casl/ability": "^6.5.0",
"@faire/mjml-react": "^3.3.0",
"@hookform/resolvers": "^3.2.0",
"@lucia-auth/adapter-mysql": "^2.0.0",
"@lucia-auth/oauth": "^2.1.1",
"@monaco-editor/react": "^4.5.1",
"@planetscale/database": "^1.10.0",
"@radix-ui/react-accordion": "^1.1.2",
"@radix-ui/react-alert-dialog": "^1.0.4",
"@radix-ui/react-avatar": "^1.0.3",
"@radix-ui/react-checkbox": "^1.0.4",
"@radix-ui/react-dialog": "^1.0.4",
"@radix-ui/react-dropdown-menu": "^2.0.5",
Expand All @@ -38,86 +46,120 @@
"@radix-ui/react-menubar": "^1.0.3",
"@radix-ui/react-navigation-menu": "^1.1.3",
"@radix-ui/react-popover": "^1.0.6",
"@radix-ui/react-radio-group": "^1.1.3",
"@radix-ui/react-scroll-area": "^1.0.4",
"@radix-ui/react-select": "^1.2.2",
"@radix-ui/react-slider": "^1.1.2",
"@radix-ui/react-slot": "^1.0.2",
"@radix-ui/react-switch": "^1.0.3",
"@radix-ui/react-tabs": "^1.0.4",
"@radix-ui/react-toast": "^1.1.4",
"@radix-ui/react-tooltip": "^1.0.6",
"@swc/helpers": "~0.5.1",
"@t3-oss/env-nextjs": "^0.6.0",
"@tailwindcss/typography": "^0.5.9",
"@tanstack/react-query": "^4.32.6",
"@types/node": "20.4.9",
"@types/react": "18.2.20",
"@types/react-dom": "18.2.7",
"autoprefixer": "10.4.14",
"@tanstack/react-table": "^8.9.3",
"@trpc/client": "^10.37.1",
"@trpc/react-query": "^10.37.1",
"@trpc/server": "^10.37.1",
"big.js": "^6.2.1",
"class-variance-authority": "^0.7.0",
"classnames": "^2.3.2",
"clsx": "^2.0.0",
"cmdk": "^0.2.0",
"convert": "^4.13.1",
"drizzle-orm": "^0.28.1",
"eslint": "8.46.0",
"eslint-config-next": "13.4.13",
"date-fns": "^2.30.0",
"dayjs": "^1.11.9",
"drizzle-orm": "^0.28.2",
"drizzle-zod": "^0.5.0",
"hex-encoding": "^2.0.2",
"ky": "^0.33.3",
"lemonsqueezy.ts": "^0.1.7",
"lightningcss-wasm": "^1.21.5",
"lucia": "^2.2.0",
"lucide-react": "^0.265.0",
"lucia-auth": "^1.8.0",
"lucide-react": "^0.260.0",
"mailing-core": "^1.0.1",
"mjml": "^4.14.1",
"morsee": "^1.0.9",
"mysql2": "^3.6.0",
"next": "13.4.14-canary.2",
"next-international": "^0.8.2",
"next-international": "^0.9.0",
"next-themes": "^0.2.1",
"postcss": "8.4.27",
"postgres": "^3.3.5",
"qrcode.react": "^3.1.0",
"react": "18.3.0-canary-f359f9b41-20230810",
"react-dom": "18.3.0-canary-f359f9b41-20230810",
"react": "18.3.0-canary-1a001dac6-20230812",
"react-day-picker": "^8.8.0",
"react-dom": "18.3.0-canary-1a001dac6-20230812",
"react-hook-form": "^7.45.4",
"react-icons": "^4.10.1",
"react-wrap-balancer": "^1.0.0",
"reading-time": "^1.5.0",
"rehype-autolink-headings": "^6.1.1",
"rehype-slug": "^5.1.0",
"remark-gfm": "^3.0.1",
"resend": "^0.17.2",
"server-only": "^0.0.1",
"sonner": "^0.6.2",
"superjson": "^1.13.1",
"tailwind-merge": "^1.14.0",
"tailwindcss": "3.3.3",
"translate": "^2.0.2",
"typescript": "5.1.6",
"valibot": "^0.11.1",
"zod": "^3.21.4"
"tslib": "^2.6.1",
"url-slug": "^4.0.1",
"valibot": "^0.12.0",
"zod": "^3.21.4",
"zod-form-data": "^2.0.1"
},
"devDependencies": {
"@commitlint/cli": "^17.7.1",
"@commitlint/config-conventional": "^17.7.0",
"@cspell/dict-uk-ua": "^3.0.0",
"@ianvs/prettier-plugin-sort-imports": "^4.1.0",
"@swc/cli": "~0.1.62",
"@swc/core": "~1.3.76",
"@tailwindcss/forms": "^0.5.4",
"@tailwindcss/typography": "^0.5.9",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.4.3",
"@types/big.js": "^6.2.0",
"@types/clean-css": "^4.2.6",
"@types/cookie": "^0.5.1",
"@types/jest": "^29.5.3",
"@types/morsee": "^1.0.0",
"@types/node": "20.4.9",
"@types/node": "20.4.10",
"@types/react": "18.2.20",
"@types/react-dom": "18.2.7",
"@typescript-eslint/eslint-plugin": "^6.3.0",
"@typescript-eslint/parser": "^6.3.0",
"autoprefixer": "^10.4.14",
"commitizen": "^4.3.0",
"cspell": "^7.0.0",
"cypress": "^12.17.3",
"cz-conventional-changelog": "^3.3.0",
"drizzle-kit": "^0.19.12",
"eslint": "8.46.0",
"eslint": "8.47.0",
"eslint-config-next": "13.4.13",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-cypress": "^2.14.0",
"eslint-plugin-import": "2.28.0",
"eslint-plugin-jsx-a11y": "6.7.1",
"eslint-plugin-react": "7.33.1",
"eslint-plugin-react-hooks": "4.6.0",
"husky": "^8.0.3",
"jest": "^29.6.2",
"jest-environment-jsdom": "^29.6.2",
"lint-staged": "^13.2.3",
"mailing": "^1.0.1",
"postcss": "^8.4.27",
"postcss-lit": "^1.1.0",
"prettier": "^3.0.1",
"prettier-plugin-packagejson": "^2.4.5",
"prettier-plugin-tailwindcss": "^0.5.1",
"prettier-plugin-tailwindcss": "^0.5.2",
"tailwind-variants": "^0.1.13",
"tailwindcss": "^3.3.3",
"tailwindcss-animate": "^1.0.6",
"ts-jest": "^29.1.1",
"ts-node": "10.9.1",
"typescript": "5.1.6"
},
"config": {
Expand Down
Loading

0 comments on commit 67a68f4

Please sign in to comment.