chore: restructure packages of the project (#7)

* chore: restructure validation package

* chore: move zod only to validation package

* chore: rename packages from alparr to homarr

* chore: move mantine core, dates and icons library to ui package, move most other mantine packages to seperate packages for further customization and centralization

* chore: fix formatting

* fix: wrong typecheck command in turbo generator

* chore: fix formatting

* chore: address pull request feedback

* chore: fix ci check issues
This commit is contained in:
Meier Lukas
2024-01-02 14:18:37 +01:00
committed by GitHub
parent a082f70470
commit fa19966fcc
67 changed files with 562 additions and 304 deletions

View File

@@ -6,7 +6,7 @@
"packageRules": [
{
"matchPackagePatterns": [
"^@alparr/"
"^@homarr/"
],
"enabled": false
}

View File

@@ -1,23 +1,33 @@
// Importing env files here to validate on build
import "./src/env.mjs";
import "@alparr/auth/env.mjs";
import "@homarr/auth/env.mjs";
/** @type {import("next").NextConfig} */
const config = {
reactStrictMode: true,
/** Enables hot reloading for local packages without a build step */
transpilePackages: [
"@alparr/api",
"@alparr/auth",
"@alparr/db",
"@alparr/ui",
"@alparr/validation",
"@homarr/api",
"@homarr/auth",
"@homarr/db",
"@homarr/ui",
"@homarr/validation",
"@homarr/form",
"@homarr/notifications",
"@homarr/spotlight",
],
/** We already do linting and typechecking as separate tasks in CI */
eslint: { ignoreDuringBuilds: true },
typescript: { ignoreBuildErrors: true },
experimental: {
optimizePackageImports: ["@mantine/core", "@mantine/hooks"],
optimizePackageImports: [
"@mantine/core",
"@mantine/hooks",
"@mantine/dates",
"@mantine/notifications",
"@mantine/form",
"@mantine/spotlight",
],
},
};

View File

@@ -1,5 +1,5 @@
{
"name": "@alparr/nextjs",
"name": "@homarr/nextjs",
"version": "0.1.0",
"private": true,
"scripts": {
@@ -13,21 +13,18 @@
"with-env": "dotenv -e ../../.env --"
},
"dependencies": {
"@alparr/api": "workspace:^0.1.0",
"@alparr/auth": "workspace:^0.1.0",
"@alparr/db": "workspace:^0.1.0",
"@alparr/translation": "workspace:^",
"@alparr/ui": "workspace:^0.1.0",
"@alparr/validation": "workspace:^0.1.0",
"@mantine/core": "^7.3.1",
"@mantine/dates": "^7.3.1",
"@mantine/form": "^7.3.1",
"@homarr/api": "workspace:^0.1.0",
"@homarr/auth": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@homarr/notifications": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@homarr/spotlight": "workspace:^0.1.0",
"@homarr/form": "workspace:^0.1.0",
"@mantine/hooks": "^7.3.1",
"@mantine/notifications": "^7.3.1",
"@mantine/spotlight": "^7.3.1",
"@mantine/tiptap": "^7.3.1",
"@t3-oss/env-nextjs": "^0.7.1",
"@tabler/icons-react": "^2.42.0",
"@tanstack/react-query": "^5.8.7",
"@tanstack/react-query-devtools": "^5.8.7",
"@tanstack/react-query-next-experimental": "5.8.7",
@@ -43,13 +40,12 @@
"postcss-preset-mantine": "^1.11.1",
"react": "18.2.0",
"react-dom": "18.2.0",
"superjson": "2.2.1",
"zod": "^3.22.2"
"superjson": "2.2.1"
},
"devDependencies": {
"@alparr/eslint-config": "workspace:^0.2.0",
"@alparr/prettier-config": "workspace:^0.1.0",
"@alparr/tsconfig": "workspace:^0.1.0",
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/node": "^18.18.13",
"@types/react": "^18.2.42",
"@types/react-dom": "^18.2.17",
@@ -61,10 +57,10 @@
"eslintConfig": {
"root": true,
"extends": [
"@alparr/eslint-config/base",
"@alparr/eslint-config/nextjs",
"@alparr/eslint-config/react"
"@homarr/eslint-config/base",
"@homarr/eslint-config/nextjs",
"@homarr/eslint-config/react"
]
},
"prettier": "@alparr/prettier-config"
"prettier": "@homarr/prettier-config"
}

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -1,7 +1,7 @@
import type { PropsWithChildren } from "react";
import { defaultLocale } from "@alparr/translation";
import { I18nProviderClient } from "@alparr/translation/client";
import { defaultLocale } from "@homarr/translation";
import { I18nProviderClient } from "@homarr/translation/client";
export const NextInternationalProvider = ({
children,

View File

@@ -2,21 +2,21 @@
import { useState } from "react";
import { useRouter } from "next/navigation";
import { signIn } from "@homarr/auth/client";
import { useForm, zodResolver } from "@homarr/form";
import { useScopedI18n } from "@homarr/translation/client";
import {
Alert,
Button,
IconAlertTriangle,
PasswordInput,
rem,
Stack,
TextInput,
} from "@mantine/core";
import { useForm, zodResolver } from "@mantine/form";
import { IconAlertTriangle } from "@tabler/icons-react";
import type { z } from "zod";
import { signIn } from "@alparr/auth/client";
import { useScopedI18n } from "@alparr/translation/client";
import { signInSchema } from "@alparr/validation";
} from "@homarr/ui";
import type { z } from "@homarr/validation";
import { validation } from "@homarr/validation";
export const LoginForm = () => {
const t = useScopedI18n("user");
@@ -24,7 +24,7 @@ export const LoginForm = () => {
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState<string>();
const form = useForm<FormType>({
validate: zodResolver(signInSchema),
validate: zodResolver(validation.user.signIn),
initialValues: {
name: "",
password: "",
@@ -79,4 +79,4 @@ export const LoginForm = () => {
);
};
type FormType = z.infer<typeof signInSchema>;
type FormType = z.infer<typeof validation.user.signIn>;

View File

@@ -1,6 +1,5 @@
import { Card, Center, Stack, Text, Title } from "@mantine/core";
import { getScopedI18n } from "@alparr/translation/server";
import { getScopedI18n } from "@homarr/translation/server";
import { Card, Center, Stack, Text, Title } from "@homarr/ui";
import { LogoWithTitle } from "~/components/layout/logo";
import { LoginForm } from "./_components/login-form";

View File

@@ -1,14 +1,17 @@
"use client";
import { useRouter } from "next/navigation";
import { Button, PasswordInput, Stack, TextInput } from "@mantine/core";
import { useForm, zodResolver } from "@mantine/form";
import type { z } from "zod";
import { useScopedI18n } from "@alparr/translation/client";
import { initUserSchema } from "@alparr/validation";
import { useForm, zodResolver } from "@homarr/form";
import {
showErrorNotification,
showSuccessNotification,
} from "@homarr/notifications";
import { useScopedI18n } from "@homarr/translation/client";
import { Button, PasswordInput, Stack, TextInput } from "@homarr/ui";
import type { z } from "@homarr/validation";
import { validation } from "@homarr/validation";
import { showErrorNotification, showSuccessNotification } from "~/notification";
import { api } from "~/utils/api";
export const InitUserForm = () => {
@@ -16,7 +19,7 @@ export const InitUserForm = () => {
const t = useScopedI18n("user");
const { mutateAsync, error, isPending } = api.user.initUser.useMutation();
const form = useForm<FormType>({
validate: zodResolver(initUserSchema),
validate: zodResolver(validation.user.init),
validateInputOnBlur: true,
validateInputOnChange: true,
initialValues: {
@@ -75,4 +78,4 @@ export const InitUserForm = () => {
);
};
type FormType = z.infer<typeof initUserSchema>;
type FormType = z.infer<typeof validation.user.init>;

View File

@@ -1,8 +1,8 @@
import { notFound } from "next/navigation";
import { Card, Center, Stack, Text, Title } from "@mantine/core";
import { db } from "@alparr/db";
import { getScopedI18n } from "@alparr/translation/server";
import { db } from "@homarr/db";
import { getScopedI18n } from "@homarr/translation/server";
import { Card, Center, Stack, Text, Title } from "@homarr/ui";
import { LogoWithTitle } from "~/components/layout/logo";
import { InitUserForm } from "./_components/init-user-form";

View File

@@ -1,15 +1,17 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "@mantine/core/styles.css";
import "@mantine/dates/styles.css";
import "@mantine/notifications/styles.css";
import "@homarr/ui/styles.css";
import "@homarr/notifications/styles.css";
import { headers } from "next/headers";
import { ColorSchemeScript, MantineProvider } from "@mantine/core";
import { Notifications } from "@mantine/notifications";
import { uiConfiguration } from "@alparr/ui";
import { Notifications } from "@homarr/notifications";
import {
ColorSchemeScript,
MantineProvider,
uiConfiguration,
} from "@homarr/ui";
import { NextInternationalProvider } from "./_client-providers/next-international";
import { TRPCReactProvider } from "./_client-providers/trpc";

View File

@@ -1,4 +1,4 @@
import { Center, Loader } from "@mantine/core";
import { Center, Loader } from "@homarr/ui";
export default function CommonLoading() {
return (

View File

@@ -1,4 +1,4 @@
import { Center } from "@mantine/core";
import { Center } from "@homarr/ui";
export default function CommonNotFound() {
return <Center h="100vh">404</Center>;

View File

@@ -1,7 +1,6 @@
import { Button, Stack, Title } from "@mantine/core";
import { auth } from "@alparr/auth";
import { db } from "@alparr/db";
import { auth } from "@homarr/auth";
import { db } from "@homarr/db";
import { Button, Stack, Title } from "@homarr/ui";
export default async function HomePage() {
const currentSession = await auth();

View File

@@ -1,6 +1,6 @@
import type { NextRequest } from "next/server";
import { createHandlers } from "@alparr/auth";
import { createHandlers } from "@homarr/auth";
export const GET = async (req: NextRequest) => {
return await createHandlers(isCredentialsRequest(req)).handlers.GET(req);

View File

@@ -1,7 +1,7 @@
import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
import { appRouter, createTRPCContext } from "@alparr/api";
import { auth } from "@alparr/auth";
import { appRouter, createTRPCContext } from "@homarr/api";
import { auth } from "@homarr/auth";
/**
* Configure basic CORS headers

View File

@@ -1,12 +1,13 @@
import Image from "next/image";
import { Group, Title } from "@mantine/core";
import { Group, Title } from "@homarr/ui";
interface LogoProps {
size: number;
}
export const Logo = ({ size = 60 }: LogoProps) => (
<Image src="/logo/alparr.png" alt="Alparr logo" width={size} height={size} />
<Image src="/logo/homarr.png" alt="homarr logo" width={size} height={size} />
);
export const LogoWithTitle = () => (

View File

@@ -1,6 +1,6 @@
import type { NextRequest } from "next/server";
import { I18nMiddleware } from "@alparr/translation/middleware";
import { I18nMiddleware } from "@homarr/translation/middleware";
export function middleware(request: NextRequest) {
return I18nMiddleware(request);

View File

@@ -1,7 +1,7 @@
import { createTRPCReact } from "@trpc/react-query";
import type { AppRouter } from "@alparr/api";
import type { AppRouter } from "@homarr/api";
export const api = createTRPCReact<AppRouter>();
export { type RouterInputs, type RouterOutputs } from "@alparr/api";
export { type RouterInputs, type RouterOutputs } from "@homarr/api";

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"baseUrl": ".",
"paths": {

View File

@@ -1,5 +1,5 @@
{
"name": "alparr",
"name": "homarr",
"private": true,
"engines": {
"node": ">=18.18.2"
@@ -21,7 +21,7 @@
"typecheck": "turbo typecheck"
},
"devDependencies": {
"@alparr/prettier-config": "workspace:^0.1.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@turbo/gen": "^1.10.16",
"prettier": "^3.1.0",
"turbo": "^1.10.16",
@@ -32,5 +32,5 @@
"@auth/core": "0.18.0"
}
},
"prettier": "@alparr/prettier-config"
"prettier": "@homarr/prettier-config"
}

View File

@@ -1,5 +1,5 @@
{
"name": "@alparr/api",
"name": "@homarr/api",
"version": "0.1.0",
"private": true,
"main": "./index.ts",
@@ -12,18 +12,17 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@alparr/auth": "workspace:^0.1.0",
"@alparr/db": "workspace:^0.1.0",
"@alparr/validation": "workspace:^0.1.0",
"@homarr/auth": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@trpc/client": "next",
"@trpc/server": "next",
"superjson": "2.2.1",
"zod": "^3.22.2"
"superjson": "2.2.1"
},
"devDependencies": {
"@alparr/eslint-config": "workspace:^0.2.0",
"@alparr/prettier-config": "workspace:^0.1.0",
"@alparr/tsconfig": "workspace:^0.1.0",
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"prettier": "^3.1.0",
"typescript": "^5.3.3"
@@ -31,8 +30,8 @@
"eslintConfig": {
"root": true,
"extends": [
"@alparr/eslint-config/base"
"@homarr/eslint-config/base"
]
},
"prettier": "@alparr/prettier-config"
"prettier": "@homarr/prettier-config"
}

View File

@@ -2,15 +2,15 @@ import "server-only";
import { TRPCError } from "@trpc/server";
import { createSalt, hashPassword } from "@alparr/auth";
import { createId, schema } from "@alparr/db";
import { initUserSchema } from "@alparr/validation";
import { createSalt, hashPassword } from "@homarr/auth";
import { createId, schema } from "@homarr/db";
import { validation } from "@homarr/validation";
import { createTRPCRouter, publicProcedure } from "../trpc";
export const userRouter = createTRPCRouter({
initUser: publicProcedure
.input(initUserSchema)
.input(validation.user.init)
.mutation(async ({ ctx, input }) => {
const firstUser = await ctx.db.query.users.findFirst({
columns: {

View File

@@ -8,11 +8,11 @@
*/
import { initTRPC, TRPCError } from "@trpc/server";
import superjson from "superjson";
import { ZodError } from "zod";
import { auth } from "@alparr/auth";
import type { Session } from "@alparr/auth";
import { db } from "@alparr/db";
import { auth } from "@homarr/auth";
import type { Session } from "@homarr/auth";
import { db } from "@homarr/db";
import { ZodError } from "@homarr/validation";
/**
* 1. CONTEXT

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},

View File

@@ -3,7 +3,7 @@ import { DrizzleAdapter } from "@auth/drizzle-adapter";
import NextAuth from "next-auth";
import Credentials from "next-auth/providers/credentials";
import { db } from "@alparr/db";
import { db } from "@homarr/db";
import { credentialsConfiguration } from "./providers/credentials";
import { EmptyNextAuthProvider } from "./providers/empty";

View File

@@ -1,5 +1,5 @@
{
"name": "@alparr/auth",
"name": "@homarr/auth",
"version": "0.1.0",
"private": true,
"main": "./index.ts",
@@ -12,7 +12,7 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@alparr/db": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0",
"@auth/core": "^0.18.4",
"@auth/drizzle-adapter": "^0.3.9",
"@t3-oss/env-nextjs": "^0.7.1",
@@ -21,14 +21,13 @@
"next": "^14.0.3",
"next-auth": "5.0.0-beta.4",
"react": "18.2.0",
"react-dom": "18.2.0",
"zod": "^3.22.2"
"react-dom": "18.2.0"
},
"devDependencies": {
"@alparr/eslint-config": "workspace:^0.2.0",
"@alparr/prettier-config": "workspace:^0.1.0",
"@alparr/tsconfig": "workspace:^0.1.0",
"@alparr/validation": "workspace:^0.1.0",
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@types/bcrypt": "5.0.2",
"@types/cookies": "0.7.10",
"eslint": "^8.53.0",
@@ -38,8 +37,8 @@
"eslintConfig": {
"root": true,
"extends": [
"@alparr/eslint-config/base"
"@homarr/eslint-config/base"
]
},
"prettier": "@alparr/prettier-config"
"prettier": "@homarr/prettier-config"
}

View File

@@ -1,9 +1,9 @@
import type Credentials from "@auth/core/providers/credentials";
import bcrypt from "bcrypt";
import { db, eq } from "@alparr/db";
import { users } from "@alparr/db/schema/sqlite";
import { signInSchema } from "@alparr/validation";
import { db, eq } from "@homarr/db";
import { users } from "@homarr/db/schema/sqlite";
import { validation } from "@homarr/validation";
type CredentialsConfiguration = Parameters<typeof Credentials>[0];
@@ -21,7 +21,7 @@ export const credentialsConfiguration = {
},
},
async authorize(credentials) {
const data = await signInSchema.parseAsync(credentials);
const data = await validation.user.signIn.parseAsync(credentials);
const user = await db.query.users.findFirst({
where: eq(users.name, data.name),

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},

View File

@@ -1,5 +1,5 @@
{
"name": "@alparr/db",
"name": "@homarr/db",
"version": "0.1.0",
"private": true,
"main": "./index.ts",
@@ -19,9 +19,9 @@
"drizzle-orm": "^0.29.1"
},
"devDependencies": {
"@alparr/eslint-config": "workspace:^0.2.0",
"@alparr/prettier-config": "workspace:^0.1.0",
"@alparr/tsconfig": "workspace:^0.1.0",
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/better-sqlite3": "7.6.8",
"dotenv-cli": "^7.3.0",
"drizzle-kit": "^0.20.6",
@@ -32,8 +32,8 @@
"eslintConfig": {
"root": true,
"extends": [
"@alparr/eslint-config/base"
"@homarr/eslint-config/base"
]
},
"prettier": "@alparr/prettier-config"
"prettier": "@homarr/prettier-config"
}

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},

2
packages/form/index.ts Normal file
View File

@@ -0,0 +1,2 @@
export * from "./src";
export * from "@mantine/form";

View File

@@ -0,0 +1,38 @@
{
"name": "@homarr/form",
"private": true,
"version": "0.1.0",
"exports": {
".": "./index.ts"
},
"typesVersions": {
"*": {
"*": [
"src/*"
]
}
},
"license": "MIT",
"scripts": {
"clean": "rm -rf .turbo node_modules",
"lint": "eslint .",
"format": "prettier --check . --ignore-path ../../.gitignore",
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"typescript": "^5.3.3"
},
"eslintConfig": {
"extends": [
"@homarr/eslint-config/base"
]
},
"prettier": "@homarr/prettier-config",
"dependencies": {
"@mantine/form": "^7.3.2"
}
}

View File

@@ -0,0 +1 @@
export const name = "form";

View File

@@ -0,0 +1,8 @@
{
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},
"include": ["*.ts", "src"],
"exclude": ["node_modules"]
}

View File

@@ -0,0 +1,2 @@
export * from "./src";
export { Notifications } from "@mantine/notifications";

View File

@@ -0,0 +1,40 @@
{
"name": "@homarr/notifications",
"private": true,
"version": "0.1.0",
"exports": {
".": "./index.ts",
"./styles.css": "./src/styles.css"
},
"typesVersions": {
"*": {
"*": [
"src/*"
]
}
},
"license": "MIT",
"scripts": {
"clean": "rm -rf .turbo node_modules",
"lint": "eslint .",
"format": "prettier --check . --ignore-path ../../.gitignore",
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"typescript": "^5.3.3"
},
"dependencies": {
"@mantine/notifications": "7.3.2",
"@homarr/ui": "workspace:^0.1.0"
},
"eslintConfig": {
"extends": [
"@homarr/eslint-config/base"
]
},
"prettier": "@homarr/prettier-config"
}

View File

@@ -1,7 +1,7 @@
import { rem } from "@mantine/core";
import type { NotificationData } from "@mantine/notifications";
import { notifications } from "@mantine/notifications";
import { IconCheck, IconX } from "@tabler/icons-react";
import { IconCheck, IconX, rem } from "@homarr/ui";
type CommonNotificationProps = Pick<NotificationData, "title" | "message">;

View File

@@ -0,0 +1 @@
@import "@mantine/notifications/styles.css";

View File

@@ -0,0 +1,8 @@
{
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},
"include": ["*.ts", "src"],
"exclude": ["node_modules"]
}

View File

@@ -0,0 +1 @@
export * from "./src";

View File

@@ -0,0 +1,38 @@
{
"name": "@homarr/spotlight",
"private": true,
"version": "0.1.0",
"exports": {
".": "./index.ts"
},
"typesVersions": {
"*": {
"*": [
"src/*"
]
}
},
"license": "MIT",
"scripts": {
"clean": "rm -rf .turbo node_modules",
"lint": "eslint .",
"format": "prettier --check . --ignore-path ../../.gitignore",
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"typescript": "^5.3.3"
},
"eslintConfig": {
"extends": [
"@homarr/eslint-config/base"
]
},
"prettier": "@homarr/prettier-config",
"dependencies": {
"@mantine/spotlight": "^7.3.2"
}
}

View File

@@ -0,0 +1 @@
export const name = "spotlight";

View File

@@ -0,0 +1,8 @@
{
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},
"include": ["*.ts", "src"],
"exclude": ["node_modules"]
}

View File

@@ -1,5 +1,5 @@
{
"name": "@alparr/translation",
"name": "@homarr/translation",
"private": true,
"version": "0.1.0",
"exports": {
@@ -23,18 +23,18 @@
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@alparr/eslint-config": "workspace:^0.2.0",
"@alparr/prettier-config": "workspace:^0.1.0",
"@alparr/tsconfig": "workspace:^0.1.0",
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"typescript": "^5.3.3"
},
"eslintConfig": {
"extends": [
"@alparr/eslint-config/base"
"@homarr/eslint-config/base"
]
},
"prettier": "@alparr/prettier-config",
"prettier": "@homarr/prettier-config",
"dependencies": {
"next-international": "^1.1.4"
}

View File

@@ -6,7 +6,7 @@ export default {
subtitle: "Willkommen zurück! Bitte gib deine Zugangsdaten ein",
},
init: {
title: "Neue Alparr Installation",
title: "Neue Homarr Installation",
subtitle: "Bitte erstelle den initialen Administrator Benutzer",
},
},

View File

@@ -6,7 +6,7 @@ export default {
subtitle: "Welcome back! Please enter your credentials",
},
init: {
title: "New Alparr installation",
title: "New Homarr installation",
subtitle: "Please create the initial administator user",
},
},

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},

View File

@@ -1 +1,4 @@
export * from "./src";
export * from "@mantine/core";
export * from "@mantine/dates";
export * from "@tabler/icons-react";

View File

@@ -1,9 +1,10 @@
{
"name": "@alparr/ui",
"name": "@homarr/ui",
"private": true,
"version": "0.1.0",
"exports": {
".": "./index.ts"
".": "./index.ts",
"./styles.css": "./src/styles.css"
},
"typesVersions": {
"*": {
@@ -20,19 +21,21 @@
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@alparr/eslint-config": "workspace:^0.2.0",
"@alparr/prettier-config": "workspace:^0.1.0",
"@alparr/tsconfig": "workspace:^0.1.0",
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"typescript": "^5.3.3"
},
"eslintConfig": {
"extends": [
"@alparr/eslint-config/base"
"@homarr/eslint-config/base"
]
},
"prettier": "@alparr/prettier-config",
"prettier": "@homarr/prettier-config",
"dependencies": {
"@mantine/core": "^7.3.1"
"@mantine/core": "^7.3.2",
"@mantine/dates": "7.3.2",
"@tabler/icons-react": "^2.42.0"
}
}

View File

@@ -0,0 +1,2 @@
@import "@mantine/core/styles.css";
@import "@mantine/dates/styles.css";

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},

View File

@@ -1 +1,2 @@
export * from "./src";
export * from "zod";

View File

@@ -1,5 +1,5 @@
{
"name": "@alparr/validation",
"name": "@homarr/validation",
"private": true,
"version": "0.1.0",
"exports": {
@@ -20,18 +20,18 @@
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@alparr/eslint-config": "workspace:^0.2.0",
"@alparr/prettier-config": "workspace:^0.1.0",
"@alparr/tsconfig": "workspace:^0.1.0",
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"typescript": "^5.3.3"
},
"eslintConfig": {
"extends": [
"@alparr/eslint-config/base"
"@homarr/eslint-config/base"
]
},
"prettier": "@alparr/prettier-config",
"prettier": "@homarr/prettier-config",
"dependencies": {
"zod": "^3.22.2"
}

View File

@@ -1 +1,5 @@
export * from "./user";
import { userSchemas } from "./user";
export const validation = {
user: userSchemas,
};

View File

@@ -3,7 +3,7 @@ import { z } from "zod";
const usernameSchema = z.string().min(3).max(255);
const passwordSchema = z.string().min(8).max(255);
export const initUserSchema = z
const initUserSchema = z
.object({
username: usernameSchema,
password: passwordSchema,
@@ -14,7 +14,12 @@ export const initUserSchema = z
message: "Passwords do not match",
});
export const signInSchema = z.object({
const signInSchema = z.object({
name: z.string(),
password: z.string(),
});
export const userSchemas = {
signIn: signInSchema,
init: initUserSchema,
};

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},

284
pnpm-lock.yaml generated
View File

@@ -11,7 +11,7 @@ importers:
.:
devDependencies:
'@alparr/prettier-config':
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:tooling/prettier
'@turbo/gen':
@@ -29,51 +29,42 @@ importers:
apps/nextjs:
dependencies:
'@alparr/api':
'@homarr/api':
specifier: workspace:^0.1.0
version: link:../../packages/api
'@alparr/auth':
'@homarr/auth':
specifier: workspace:^0.1.0
version: link:../../packages/auth
'@alparr/db':
'@homarr/db':
specifier: workspace:^0.1.0
version: link:../../packages/db
'@alparr/translation':
specifier: workspace:^
'@homarr/form':
specifier: workspace:^0.1.0
version: link:../../packages/form
'@homarr/notifications':
specifier: workspace:^0.1.0
version: link:../../packages/notifications
'@homarr/spotlight':
specifier: workspace:^0.1.0
version: link:../../packages/spotlight
'@homarr/translation':
specifier: workspace:^0.1.0
version: link:../../packages/translation
'@alparr/ui':
'@homarr/ui':
specifier: workspace:^0.1.0
version: link:../../packages/ui
'@alparr/validation':
'@homarr/validation':
specifier: workspace:^0.1.0
version: link:../../packages/validation
'@mantine/core':
specifier: ^7.3.1
version: 7.3.1(@mantine/hooks@7.3.1)(@types/react@18.2.42)(react-dom@18.2.0)(react@18.2.0)
'@mantine/dates':
specifier: ^7.3.1
version: 7.3.1(@mantine/core@7.3.1)(@mantine/hooks@7.3.1)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0)
'@mantine/form':
specifier: ^7.3.1
version: 7.3.1(react@18.2.0)
'@mantine/hooks':
specifier: ^7.3.1
version: 7.3.1(react@18.2.0)
'@mantine/notifications':
specifier: ^7.3.1
version: 7.3.1(@mantine/core@7.3.1)(@mantine/hooks@7.3.1)(react-dom@18.2.0)(react@18.2.0)
'@mantine/spotlight':
specifier: ^7.3.1
version: 7.3.1(@mantine/core@7.3.1)(@mantine/hooks@7.3.1)(react-dom@18.2.0)(react@18.2.0)
'@mantine/tiptap':
specifier: ^7.3.1
version: 7.3.1(@mantine/core@7.3.1)(@mantine/hooks@7.3.1)(@tabler/icons-react@2.42.0)(@tiptap/extension-link@2.1.13)(react-dom@18.2.0)(react@18.2.0)
'@t3-oss/env-nextjs':
specifier: ^0.7.1
version: 0.7.1(typescript@5.3.3)(zod@3.22.2)
'@tabler/icons-react':
specifier: ^2.42.0
version: 2.42.0(react@18.2.0)
version: 0.7.1(typescript@5.3.3)(zod@3.22.4)
'@tanstack/react-query':
specifier: ^5.8.7
version: 5.8.7(react-dom@18.2.0)(react@18.2.0)
@@ -122,17 +113,14 @@ importers:
superjson:
specifier: 2.2.1
version: 2.2.1
zod:
specifier: ^3.22.2
version: 3.22.2
devDependencies:
'@alparr/eslint-config':
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@alparr/prettier-config':
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@alparr/tsconfig':
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
'@types/node':
@@ -159,13 +147,13 @@ importers:
packages/api:
dependencies:
'@alparr/auth':
'@homarr/auth':
specifier: workspace:^0.1.0
version: link:../auth
'@alparr/db':
'@homarr/db':
specifier: workspace:^0.1.0
version: link:../db
'@alparr/validation':
'@homarr/validation':
specifier: workspace:^0.1.0
version: link:../validation
'@trpc/client':
@@ -177,17 +165,14 @@ importers:
superjson:
specifier: 2.2.1
version: 2.2.1
zod:
specifier: ^3.22.2
version: 3.22.2
devDependencies:
'@alparr/eslint-config':
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@alparr/prettier-config':
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@alparr/tsconfig':
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
eslint:
@@ -202,18 +187,18 @@ importers:
packages/auth:
dependencies:
'@alparr/db':
specifier: workspace:^0.1.0
version: link:../db
'@auth/core':
specifier: 0.18.0
version: 0.18.0
'@auth/drizzle-adapter':
specifier: ^0.3.9
version: 0.3.9
'@homarr/db':
specifier: workspace:^0.1.0
version: link:../db
'@t3-oss/env-nextjs':
specifier: ^0.7.1
version: 0.7.1(typescript@5.3.3)(zod@3.22.2)
version: 0.7.1(typescript@5.3.3)(zod@3.22.4)
bcrypt:
specifier: ^5.1.1
version: 5.1.1
@@ -232,20 +217,17 @@ importers:
react-dom:
specifier: 18.2.0
version: 18.2.0(react@18.2.0)
zod:
specifier: ^3.22.2
version: 3.22.2
devDependencies:
'@alparr/eslint-config':
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@alparr/prettier-config':
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@alparr/tsconfig':
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
'@alparr/validation':
'@homarr/validation':
specifier: workspace:^0.1.0
version: link:../validation
'@types/bcrypt':
@@ -276,13 +258,13 @@ importers:
specifier: ^0.29.1
version: 0.29.1(@types/better-sqlite3@7.6.8)(better-sqlite3@9.2.2)
devDependencies:
'@alparr/eslint-config':
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@alparr/prettier-config':
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@alparr/tsconfig':
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
'@types/better-sqlite3':
@@ -304,19 +286,88 @@ importers:
specifier: ^5.3.3
version: 5.3.3
packages/form:
dependencies:
'@mantine/form':
specifier: ^7.3.2
version: 7.3.2(react@18.2.0)
devDependencies:
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
eslint:
specifier: ^8.53.0
version: 8.53.0
typescript:
specifier: ^5.3.3
version: 5.3.3
packages/notifications:
dependencies:
'@homarr/ui':
specifier: workspace:^0.1.0
version: link:../ui
'@mantine/notifications':
specifier: 7.3.2
version: 7.3.2(@mantine/core@7.3.2)(@mantine/hooks@7.3.2)(react-dom@18.2.0)(react@18.2.0)
devDependencies:
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
eslint:
specifier: ^8.53.0
version: 8.53.0
typescript:
specifier: ^5.3.3
version: 5.3.3
packages/spotlight:
dependencies:
'@mantine/spotlight':
specifier: ^7.3.2
version: 7.3.2(@mantine/core@7.3.2)(@mantine/hooks@7.3.2)(react-dom@18.2.0)(react@18.2.0)
devDependencies:
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
eslint:
specifier: ^8.53.0
version: 8.53.0
typescript:
specifier: ^5.3.3
version: 5.3.3
packages/translation:
dependencies:
next-international:
specifier: ^1.1.4
version: 1.1.4
devDependencies:
'@alparr/eslint-config':
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@alparr/prettier-config':
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@alparr/tsconfig':
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
eslint:
@@ -329,16 +380,22 @@ importers:
packages/ui:
dependencies:
'@mantine/core':
specifier: ^7.3.1
version: 7.3.1(@mantine/hooks@7.3.1)(@types/react@18.2.42)(react-dom@18.2.0)(react@18.2.0)
specifier: ^7.3.2
version: 7.3.2(@mantine/hooks@7.3.2)(react-dom@18.2.0)(react@18.2.0)
'@mantine/dates':
specifier: 7.3.2
version: 7.3.2(@mantine/core@7.3.2)(@mantine/hooks@7.3.2)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0)
'@tabler/icons-react':
specifier: ^2.42.0
version: 2.42.0(react@18.2.0)
devDependencies:
'@alparr/eslint-config':
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@alparr/prettier-config':
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@alparr/tsconfig':
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
eslint:
@@ -354,13 +411,13 @@ importers:
specifier: ^3.22.2
version: 3.22.2
devDependencies:
'@alparr/eslint-config':
'@homarr/eslint-config':
specifier: workspace:^0.2.0
version: link:../../tooling/eslint
'@alparr/prettier-config':
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../../tooling/prettier
'@alparr/tsconfig':
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
eslint:
@@ -400,10 +457,10 @@ importers:
specifier: ^4.6.0
version: 4.6.0(eslint@8.53.0)
devDependencies:
'@alparr/prettier-config':
'@homarr/prettier-config':
specifier: workspace:^0.1.0
version: link:../prettier
'@alparr/tsconfig':
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../typescript
'@types/eslint':
@@ -427,7 +484,7 @@ importers:
specifier: ^3.1.0
version: 3.1.0
devDependencies:
'@alparr/tsconfig':
'@homarr/tsconfig':
specifier: workspace:^0.1.0
version: link:../typescript
typescript:
@@ -1346,25 +1403,45 @@ packages:
- '@types/react'
dev: false
/@mantine/dates@7.3.1(@mantine/core@7.3.1)(@mantine/hooks@7.3.1)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-OI2qs5MgdYkwI7n+KuQ1tj9OhHloO0ozVOTSYyF/bgEfawCrd4TM76IcvIbfcTpmTLly1FflqFTM45+KVoQtbQ==}
/@mantine/core@7.3.2(@mantine/hooks@7.3.2)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-CwAuQogVLcLR7O9e1eOgi3gtk4XX6cnaqevAxzJJpIOIyCnHiQ3cEGINVXyUUjUUipBlvK3sqz3NPGJ2ekLFDQ==}
peerDependencies:
'@mantine/core': 7.3.1
'@mantine/hooks': 7.3.1
'@mantine/hooks': 7.3.2
react: ^18.2.0
react-dom: ^18.2.0
dependencies:
'@floating-ui/react': 0.24.8(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 7.3.2(react@18.2.0)
clsx: 2.0.0
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
react-number-format: 5.3.1(react-dom@18.2.0)(react@18.2.0)
react-remove-scroll: 2.5.7(@types/react@18.2.42)(react@18.2.0)
react-textarea-autosize: 8.5.3(@types/react@18.2.42)(react@18.2.0)
type-fest: 3.13.1
transitivePeerDependencies:
- '@types/react'
dev: false
/@mantine/dates@7.3.2(@mantine/core@7.3.2)(@mantine/hooks@7.3.2)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-mmP0PYpM9GYTXRhEL4Ulb+170vgW8fpGwRdVNuCCE/cyzIKHPJzaI2pEGR/i+sboH+RC1InCy/JaiDkPY6Fzlg==}
peerDependencies:
'@mantine/core': 7.3.2
'@mantine/hooks': 7.3.2
dayjs: '>=1.0.0'
react: ^18.2.0
react-dom: ^18.2.0
dependencies:
'@mantine/core': 7.3.1(@mantine/hooks@7.3.1)(@types/react@18.2.42)(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 7.3.1(react@18.2.0)
'@mantine/core': 7.3.2(@mantine/hooks@7.3.2)(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 7.3.2(react@18.2.0)
clsx: 2.0.0
dayjs: 1.11.10
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
/@mantine/form@7.3.1(react@18.2.0):
resolution: {integrity: sha512-Oo8f7MuexeLM9ylQP5sZu4ljM//8wncvv+N9ZbPsagIn0RMW+oqdEikJfaAgZafSJKngAJ0H4krJu9J83sraDw==}
/@mantine/form@7.3.2(react@18.2.0):
resolution: {integrity: sha512-/qa1KQKVC46XWgIU190r3XM3Xld8Lsvz4L/an//TO67RnAGEdC5OCvr2JCb+fprZZi3YdxaKOkVNvP20W23qkg==}
peerDependencies:
react: ^18.2.0
dependencies:
@@ -1381,39 +1458,47 @@ packages:
react: 18.2.0
dev: false
/@mantine/notifications@7.3.1(@mantine/core@7.3.1)(@mantine/hooks@7.3.1)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-9q/Kxzc18hx5PZW4uUSoYRKBlVZPojmbS6DFrua9T684MyDz2a4Hhj6d90i+MwDIu39p6C6i3pl8FLoPqeb0ww==}
/@mantine/hooks@7.3.2(react@18.2.0):
resolution: {integrity: sha512-xgumuuI3PBWXff5N02HCI7PEy25mDEdyXDQklUYK93J6FKwpcosyZnGVitoUrV1gLtYYa9ZudeAWdhHuh/CpOg==}
peerDependencies:
'@mantine/core': 7.3.1
'@mantine/hooks': 7.3.1
react: ^18.2.0
dependencies:
react: 18.2.0
dev: false
/@mantine/notifications@7.3.2(@mantine/core@7.3.2)(@mantine/hooks@7.3.2)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-XOzgm4pm4XszavVN0QUjN+IP0xiG2IochxJSz/FduTI0r3u1WxdpvDYlOvEJpHhtWvyqI8W8rx6cPJaD2HdAwQ==}
peerDependencies:
'@mantine/core': 7.3.2
'@mantine/hooks': 7.3.2
react: ^18.2.0
react-dom: ^18.2.0
dependencies:
'@mantine/core': 7.3.1(@mantine/hooks@7.3.1)(@types/react@18.2.42)(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 7.3.1(react@18.2.0)
'@mantine/store': 7.3.1(react@18.2.0)
'@mantine/core': 7.3.2(@mantine/hooks@7.3.2)(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 7.3.2(react@18.2.0)
'@mantine/store': 7.3.2(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0)
dev: false
/@mantine/spotlight@7.3.1(@mantine/core@7.3.1)(@mantine/hooks@7.3.1)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-FgejHyrtwytwwErNwGab83qxrvNXe3TSCcWdJaOY4QSAbk9Awhja2ZpiDUKHV9MR5GKk3IiH6WVvEtYq5eOOhQ==}
/@mantine/spotlight@7.3.2(@mantine/core@7.3.2)(@mantine/hooks@7.3.2)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-wvrIj7ZZKoVwKFxgY+KvWilu1YYdkv8HDUzZzRxOlD9fjPyyMRgBxAdVkxA4sLbol4XoCpW83dNIiXDII4httw==}
peerDependencies:
'@mantine/core': 7.3.1
'@mantine/hooks': 7.3.1
'@mantine/core': 7.3.2
'@mantine/hooks': 7.3.2
react: ^18.2.0
react-dom: ^18.2.0
dependencies:
'@mantine/core': 7.3.1(@mantine/hooks@7.3.1)(@types/react@18.2.42)(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 7.3.1(react@18.2.0)
'@mantine/store': 7.3.1(react@18.2.0)
'@mantine/core': 7.3.2(@mantine/hooks@7.3.2)(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 7.3.2(react@18.2.0)
'@mantine/store': 7.3.2(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
/@mantine/store@7.3.1(react@18.2.0):
resolution: {integrity: sha512-B4kFI0ZhZTftlMvD5d8P0y1ATKFAMIA5MT4j0gNUgYEKMl1KkM/dT3kBPC2/32jz4GM9t2UL+D3CvkTwSX/BsA==}
/@mantine/store@7.3.2(react@18.2.0):
resolution: {integrity: sha512-M1eWHzTRCeCFvrpFhXKIM9zblrlIT5/XrMue/fP2HrkA43dpkgq+ArnZkN3LhG9lWR/EKbRwQWDhDIvdLtfD7w==}
peerDependencies:
react: ^18.2.0
dependencies:
@@ -1618,7 +1703,7 @@ packages:
tslib: 2.5.0
dev: false
/@t3-oss/env-core@0.7.1(typescript@5.3.3)(zod@3.22.2):
/@t3-oss/env-core@0.7.1(typescript@5.3.3)(zod@3.22.4):
resolution: {integrity: sha512-3+SQt39OlmSaRLqYVFv8uRm1BpFepM5TIiMytRqO9cjH+wB77o6BIJdeyM5h5U4qLBMEzOJWCY4MBaU/rLwbYw==}
peerDependencies:
typescript: '>=4.7.2'
@@ -1628,10 +1713,10 @@ packages:
optional: true
dependencies:
typescript: 5.3.3
zod: 3.22.2
zod: 3.22.4
dev: false
/@t3-oss/env-nextjs@0.7.1(typescript@5.3.3)(zod@3.22.2):
/@t3-oss/env-nextjs@0.7.1(typescript@5.3.3)(zod@3.22.4):
resolution: {integrity: sha512-tQDbNLGCOvKGi+JoGuJ/CJInJI7/kLWJqtgGppAKS7ZFLdVOqZYR/uRjxlXOWPnxmUKF8VswOAsq7fXUpNZDhA==}
peerDependencies:
typescript: '>=4.7.2'
@@ -1640,9 +1725,9 @@ packages:
typescript:
optional: true
dependencies:
'@t3-oss/env-core': 0.7.1(typescript@5.3.3)(zod@3.22.2)
'@t3-oss/env-core': 0.7.1(typescript@5.3.3)(zod@3.22.4)
typescript: 5.3.3
zod: 3.22.2
zod: 3.22.4
dev: false
/@tabler/icons-react@2.42.0(react@18.2.0):
@@ -7059,4 +7144,3 @@ packages:
/zod@3.22.4:
resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
dev: true

View File

@@ -1,5 +1,5 @@
{
"name": "@alparr/eslint-config",
"name": "@homarr/eslint-config",
"version": "0.2.0",
"private": true,
"license": "MIT",
@@ -27,8 +27,8 @@
},
"devDependencies": {
"@types/eslint": "^8.44.7",
"@alparr/prettier-config": "workspace:^0.1.0",
"@alparr/tsconfig": "workspace:^0.1.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"typescript": "^5.3.3"
},
@@ -38,5 +38,5 @@
"./base.js"
]
},
"prettier": "@alparr/prettier-config"
"prettier": "@homarr/prettier-config"
}

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},

View File

@@ -1,3 +1,3 @@
{
"name": "@alparr/github"
"name": "@homarr/github"
}

View File

@@ -9,7 +9,7 @@ const config = {
"^(next/(.*)$)|^(next$)",
"<THIRD_PARTY_MODULES>",
"",
"^@alparr/(.*)$",
"^@homarr/(.*)$",
"",
"^~/",
"^[../]",

View File

@@ -1,5 +1,5 @@
{
"name": "@alparr/prettier-config",
"name": "@homarr/prettier-config",
"private": true,
"version": "0.1.0",
"main": "index.mjs",
@@ -13,8 +13,8 @@
"prettier": "^3.1.0"
},
"devDependencies": {
"@alparr/tsconfig": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"typescript": "^5.3.3"
},
"prettier": "@alparr/prettier-config"
"prettier": "@homarr/prettier-config"
}

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},

View File

@@ -1,5 +1,5 @@
{
"name": "@alparr/tsconfig",
"name": "@homarr/tsconfig",
"private": true,
"version": "0.1.0",
"files": [

View File

@@ -10,13 +10,13 @@ interface PackageJson {
export default function generator(plop: PlopTypes.NodePlopAPI): void {
plop.setGenerator("init", {
description: "Generate a new package for the alparr Monorepo",
description: "Generate a new package for the homarr Monorepo",
prompts: [
{
type: "input",
name: "name",
message:
"What is the name of the package? (You can skip the `@alparr/` prefix)",
"What is the name of the package? (You can skip the `@homarr/` prefix)",
},
{
type: "input",
@@ -28,8 +28,8 @@ export default function generator(plop: PlopTypes.NodePlopAPI): void {
actions: [
(answers) => {
if ("name" in answers && typeof answers.name === "string") {
if (answers.name.startsWith("@alparr/")) {
answers.name = answers.name.replace("@alparr/", "");
if (answers.name.startsWith("@homarr/")) {
answers.name = answers.name.replace("@homarr/", "");
}
}
return "Config sanitized";

View File

@@ -1,35 +1,35 @@
{
"name": "@alparr/{{ name }}",
"private": true,
"version": "0.1.0",
"exports": {
".": "./index.ts"
},
"typesVersions": {
"*": {
"*": [
"src/*"
]
}
},
"license": "MIT",
"scripts": {
"clean": "rm -rf .turbo node_modules",
"lint": "eslint .",
"format": "prettier --check . --ignore-path ../../.gitignore",
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@alparr/eslint-config": "workspace:^0.2.0",
"@alparr/prettier-config": "workspace:^0.1.0",
"@alparr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"typescript": "^5.3.3"
},
"eslintConfig": {
"extends": [
"@alparr/eslint-config/base"
]
},
"prettier": "@alparr/prettier-config"
}
"name": "@homarr/{{name}}",
"private": true,
"version": "0.1.0",
"exports": {
".": "./index.ts"
},
"typesVersions": {
"*": {
"*": [
"src/*"
]
}
},
"license": "MIT",
"scripts": {
"clean": "rm -rf .turbo node_modules",
"lint": "eslint .",
"format": "prettier --check . --ignore-path ../../.gitignore",
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^8.53.0",
"typescript": "^5.3.3"
},
"eslintConfig": {
"extends": [
"@homarr/eslint-config/base"
]
},
"prettier": "@homarr/prettier-config"
}

View File

@@ -1,5 +1,5 @@
{
"extends": "@alparr/tsconfig/base.json",
"extends": "@homarr/tsconfig/base.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},