Compare commits

..

21 commits

Author SHA1 Message Date
cc7e943a5a
refactor(validation): restucture api input and output validation
Some checks failed
container-scan / Container Scan (pull_request) Failing after 10m17s
docker-build / docker (pull_request) Failing after 12m27s
2025-06-18 23:19:33 +02:00
485a95f99a
fix(api): add onDelete cascade to user relations in Prisma schema 2025-06-18 23:19:32 +02:00
46e01b8c5e
feat(api): support user participant invitation when creating events 2025-06-18 23:19:31 +02:00
7e3a99d106
fix(api): parse search api url params 2025-06-18 23:19:30 +02:00
f835afda7e
chore: update dev container to support api client generation 2025-06-18 23:19:29 +02:00
71a401ec9f
refactor(api): standardize Swagger documentation 2025-06-18 23:19:28 +02:00
16a5825dd3
feat(api): add user search endpoint and normalize response data and validation 2025-06-18 23:19:27 +02:00
b9dda271af
feat(api): add tags to event and user routes for better categorization 2025-06-18 23:19:26 +02:00
e1e348acb6
fix(api): validate timestamps when creating events and allow setting a location 2025-06-18 23:19:09 +02:00
2c114f0a25
feat(api): add summaries for user information retrieval and update endpoints 2025-06-18 23:19:08 +02:00
14ac90ad41
feat(api): add participant management endpoints and update event response structure 2025-06-18 23:19:07 +02:00
9bb822388c
refactor(api): normalize swagger example formating 2025-06-18 23:19:07 +02:00
3e877ea1d2
style: format code 2025-06-18 23:19:06 +02:00
637f33d0ff
feat(auth): update user lookup to support name or email in authentication
When testing api endpoints make sure to login with a real user (not with the dev hardcoded user) by either registering one with a password other than "password" or setting DISABLE_AUTH_TEST_USER to "true" (`DISABLE_AUTH_TEST_USER=true yarn dev`)
2025-06-18 23:19:05 +02:00
ae8c4da25d
feat(api): implement event management endpoints for GET, DELETE, and PATCH operations 2025-06-18 23:19:04 +02:00
62d45fb590
feat(api): add endpoint for event creation and listing of all events 2025-06-18 23:19:03 +02:00
3a0ce64c00
feat(api): add react-query client generation and redesign api responses 2025-06-18 23:19:02 +02:00
6c9569ae40
feat(api): add user info GET endpoint and blocklist usernames 2025-06-18 23:18:45 +02:00
c5ca2d56ac
feat(api): add swagger docs, /api/user/me GET and PUT endpoints 2025-06-18 23:18:44 +02:00
98776aacb2 Merge pull request 'refactor: organized component folder structure' (#98)
All checks were successful
container-scan / Container Scan (push) Successful in 5m13s
docker-build / docker (push) Successful in 12m22s
Reviewed-on: #98
Reviewed-by: Dominik <mail@dominikstahl.dev>
2025-06-18 21:16:50 +00:00
a412d0710b refactor: organized component folder structure
All checks were successful
container-scan / Container Scan (pull_request) Successful in 4m39s
docker-build / docker (pull_request) Successful in 10m19s
fix: scrolling in login page
2025-06-18 22:25:27 +02:00
15 changed files with 31 additions and 31 deletions

View file

@ -1,7 +1,7 @@
'use client';
import { RedirectButton } from '@/components/user/redirect-button';
import { ThemePicker } from '@/components/user/theme-picker';
import { RedirectButton } from '@/components/buttons/redirect-button';
import { ThemePicker } from '@/components/misc/theme-picker';
import { useGetApiUserMe } from '@/generated/api/user/user';
export default function Home() {

View file

@ -1,4 +1,4 @@
import { ThemeProvider } from '@/components/theme-provider';
import { ThemeProvider } from '@/components/wrappers/theme-provider';
import type { Metadata } from 'next';
import './globals.css';

View file

@ -1,17 +1,17 @@
import { auth, providerMap } from '@/auth';
import SSOLogin from '@/components/user/sso-login-button';
import LoginForm from '@/components/user/login-form';
import SSOLogin from '@/components/buttons/sso-login-button';
import LoginForm from '@/components/forms/login-form';
import { redirect } from 'next/navigation';
import { Button } from '@/components/custom-ui/button';
import { Button } from '@/components/ui/button';
import Image from 'next/image';
import { Separator } from '@/components/custom-ui/separator';
import Logo from '@/components/logo';
import { Separator } from '@/components/ui/separator';
import Logo from '@/components/misc/logo';
import {
Card,
CardContent,
CardHeader,
} from '@/components/custom-ui/login-card';
import { ThemePicker } from '@/components/user/theme-picker';
import { ThemePicker } from '@/components/misc/theme-picker';
import {
HoverCard,
HoverCardTrigger,
@ -26,7 +26,7 @@ export default async function LoginPage() {
}
return (
<div className='flex flex-col items-center min-h-screen'>
<div className='flex flex-col items-center max-h-screen overflow-y-auto'>
<div className='flex flex-col items-center min-h-screen'>
<div className='fixed top-4 right-4'>
<ThemePicker />
@ -51,20 +51,20 @@ export default async function LoginPage() {
</CardContent>
</Card>
</div>
<HoverCard>
<HoverCardTrigger>
<Button variant='link'>made with love</Button>
</HoverCardTrigger>
<HoverCardContent className='flex items-center justify-center'>
<Image
src='https://img1.wikia.nocookie.net/__cb20140808110649/clubpenguin/images/a/a1/Action_Dance_Light_Blue.gif'
width='150'
height='150'
alt='dancing penguin'
></Image>
</HoverCardContent>
</HoverCard>
</div>
<HoverCard>
<HoverCardTrigger>
<Button variant='link'>made with love</Button>
</HoverCardTrigger>
<HoverCardContent className='flex items-center justify-center'>
<Image
src='https://img1.wikia.nocookie.net/__cb20140808110649/clubpenguin/images/a/a1/Action_Dance_Light_Blue.gif'
width='150'
height='150'
alt='dancing penguin'
></Image>
</HoverCardContent>
</HoverCard>
</div>
);
}

View file

@ -1,5 +1,5 @@
import { signOut } from '@/auth';
import { Button } from '@/components/custom-ui/button';
import { Button } from '@/components/ui/button';
import {
Card,
CardContent,

View file

@ -1,4 +1,4 @@
import { Button } from '@/components/custom-ui/button';
import { Button } from '@/components/ui/button';
import {
Card,
CardContent,

View file

@ -1,4 +1,4 @@
import { Button } from '@/components/custom-ui/button';
import { Button } from '@/components/ui/button';
import { IconProp } from '@fortawesome/fontawesome-svg-core';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';

View file

@ -1,4 +1,4 @@
import { Button } from '../custom-ui/button';
import { Button } from '../ui/button';
import Link from 'next/link';
export function RedirectButton({

View file

@ -1,5 +1,5 @@
import { signIn } from '@/auth';
import { IconButton } from '@/components/icon-button';
import { IconButton } from '@/components/buttons/icon-button';
import { faOpenid } from '@fortawesome/free-brands-svg-icons';
export default function SSOLogin({

View file

@ -3,8 +3,8 @@
import React, { useState, useRef } from 'react';
import { useRouter } from 'next/navigation';
import LabeledInput from '@/components/labeled-input';
import { Button } from '@/components/custom-ui/button';
import LabeledInput from '@/components/custom-ui/labeled-input';
import { Button } from '@/components/ui/button';
import useZodForm from '@/lib/hooks/useZodForm';
import { loginSchema, registerSchema } from '@/lib/auth/validation';
import { loginAction } from '@/lib/auth/login';

View file

@ -4,7 +4,7 @@ import * as React from 'react';
import { Moon, Sun } from 'lucide-react';
import { useTheme } from 'next-themes';
import { Button } from '@/components/custom-ui/button';
import { Button } from '@/components/ui/button';
import {
DropdownMenu,
DropdownMenuContent,