feat: rebrand application from Padel Pro to SmashPoint
Complete rename across all layers: UI branding, package names (@smashpoint/web, @smashpoint/shared), infrastructure (Docker, DB config), seed data, documentation, and logo/favicon. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -55,8 +55,8 @@ export default function SettingsPage() {
|
||||
const [message, setMessage] = useState<{ type: "success" | "error"; text: string } | null>(null);
|
||||
|
||||
// Organization state
|
||||
const [orgName, setOrgName] = useState("Padel Pro Demo");
|
||||
const [orgEmail, setOrgEmail] = useState("info@padelpro.com");
|
||||
const [orgName, setOrgName] = useState("SmashPoint Demo");
|
||||
const [orgEmail, setOrgEmail] = useState("info@smashpoint.com");
|
||||
const [orgPhone, setOrgPhone] = useState("+52 555 123 4567");
|
||||
const [currency, setCurrency] = useState("MXN");
|
||||
const [timezone, setTimezone] = useState("America/Mexico_City");
|
||||
|
||||
@@ -11,29 +11,20 @@ function LoginContent() {
|
||||
<div className="max-w-md text-center">
|
||||
{/* Logo */}
|
||||
<div className="mb-8 flex justify-center">
|
||||
<div className="w-24 h-24 bg-white/10 backdrop-blur-sm rounded-2xl flex items-center justify-center border border-white/20">
|
||||
<svg
|
||||
viewBox="0 0 100 100"
|
||||
className="w-16 h-16 text-white"
|
||||
fill="currentColor"
|
||||
>
|
||||
{/* Padel racket stylized icon */}
|
||||
<ellipse cx="50" cy="40" rx="28" ry="35" fill="none" stroke="currentColor" strokeWidth="4" />
|
||||
<line x1="50" y1="75" x2="50" y2="95" stroke="currentColor" strokeWidth="6" strokeLinecap="round" />
|
||||
<circle cx="35" cy="30" r="3" />
|
||||
<circle cx="50" cy="25" r="3" />
|
||||
<circle cx="65" cy="30" r="3" />
|
||||
<circle cx="35" cy="45" r="3" />
|
||||
<circle cx="50" cy="40" r="3" />
|
||||
<circle cx="65" cy="45" r="3" />
|
||||
<circle cx="42" cy="55" r="3" />
|
||||
<circle cx="58" cy="55" r="3" />
|
||||
<div className="w-24 h-24 bg-amber-500/20 backdrop-blur-sm rounded-2xl flex items-center justify-center border border-amber-400/30">
|
||||
<svg viewBox="0 0 100 100" className="w-16 h-16" fill="none">
|
||||
{/* Lightning bolt / smash icon */}
|
||||
<path d="M55 10L20 55h25l-10 35L70 45H45l10-35z" fill="#FBBF24" />
|
||||
{/* Impact sparks */}
|
||||
<circle cx="78" cy="18" r="4" fill="#FBBF24" opacity="0.8" />
|
||||
<circle cx="85" cy="28" r="2.5" fill="#FBBF24" opacity="0.6" />
|
||||
<circle cx="72" cy="10" r="2" fill="#FBBF24" opacity="0.5" />
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Title */}
|
||||
<h1 className="text-4xl font-bold mb-4">Padel Pro</h1>
|
||||
<h1 className="text-4xl font-bold mb-4">SmashPoint</h1>
|
||||
|
||||
{/* Tagline */}
|
||||
<p className="text-xl text-primary-200 mb-8">
|
||||
@@ -104,25 +95,15 @@ function LoginContent() {
|
||||
<div className="w-full lg:w-1/2 flex flex-col justify-center items-center p-6 lg:p-12">
|
||||
{/* Mobile Logo */}
|
||||
<div className="lg:hidden mb-8 text-center text-white">
|
||||
<div className="w-16 h-16 mx-auto mb-4 bg-white/10 backdrop-blur-sm rounded-xl flex items-center justify-center border border-white/20">
|
||||
<svg
|
||||
viewBox="0 0 100 100"
|
||||
className="w-10 h-10 text-white"
|
||||
fill="currentColor"
|
||||
>
|
||||
<ellipse cx="50" cy="40" rx="28" ry="35" fill="none" stroke="currentColor" strokeWidth="4" />
|
||||
<line x1="50" y1="75" x2="50" y2="95" stroke="currentColor" strokeWidth="6" strokeLinecap="round" />
|
||||
<circle cx="35" cy="30" r="3" />
|
||||
<circle cx="50" cy="25" r="3" />
|
||||
<circle cx="65" cy="30" r="3" />
|
||||
<circle cx="35" cy="45" r="3" />
|
||||
<circle cx="50" cy="40" r="3" />
|
||||
<circle cx="65" cy="45" r="3" />
|
||||
<circle cx="42" cy="55" r="3" />
|
||||
<circle cx="58" cy="55" r="3" />
|
||||
<div className="w-16 h-16 mx-auto mb-4 bg-amber-500/20 backdrop-blur-sm rounded-xl flex items-center justify-center border border-amber-400/30">
|
||||
<svg viewBox="0 0 100 100" className="w-10 h-10" fill="none">
|
||||
<path d="M55 10L20 55h25l-10 35L70 45H45l10-35z" fill="#FBBF24" />
|
||||
<circle cx="78" cy="18" r="4" fill="#FBBF24" opacity="0.8" />
|
||||
<circle cx="85" cy="28" r="2.5" fill="#FBBF24" opacity="0.6" />
|
||||
<circle cx="72" cy="10" r="2" fill="#FBBF24" opacity="0.5" />
|
||||
</svg>
|
||||
</div>
|
||||
<h1 className="text-2xl font-bold">Padel Pro</h1>
|
||||
<h1 className="text-2xl font-bold">SmashPoint</h1>
|
||||
<p className="text-sm text-primary-200 mt-1">Sistema de Gestion para Clubes de Padel</p>
|
||||
</div>
|
||||
|
||||
@@ -130,7 +111,7 @@ function LoginContent() {
|
||||
|
||||
{/* Footer */}
|
||||
<p className="mt-8 text-center text-sm text-primary-300">
|
||||
© {new Date().getFullYear()} Padel Pro. Todos los derechos reservados.
|
||||
© {new Date().getFullYear()} SmashPoint. Todos los derechos reservados.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,7 +2,7 @@ import { NextRequest, NextResponse } from 'next/server';
|
||||
import { getServerSession } from 'next-auth';
|
||||
import { authOptions } from '@/lib/auth';
|
||||
import { db } from '@/lib/db';
|
||||
import { createBookingSchema } from '@padel-pro/shared';
|
||||
import { createBookingSchema } from '@smashpoint/shared';
|
||||
import { Decimal } from '@prisma/client/runtime/library';
|
||||
|
||||
// Helper function to check if a time is premium (after 18:00 or weekend)
|
||||
|
||||
@@ -2,7 +2,7 @@ import { NextRequest, NextResponse } from 'next/server';
|
||||
import { getServerSession } from 'next-auth';
|
||||
import { authOptions } from '@/lib/auth';
|
||||
import { db } from '@/lib/db';
|
||||
import { createClientSchema } from '@padel-pro/shared';
|
||||
import { createClientSchema } from '@smashpoint/shared';
|
||||
|
||||
// GET /api/clients - List/search clients
|
||||
export async function GET(request: NextRequest) {
|
||||
|
||||
6
apps/web/app/icon.svg
Normal file
6
apps/web/app/icon.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none">
|
||||
<rect width="32" height="32" rx="8" fill="#F59E0B"/>
|
||||
<path d="M17.5 3L6.5 17h8l-3 12L22.5 15H14.5l3-12z" fill="white"/>
|
||||
<circle cx="25" cy="6" r="1.5" fill="white" opacity="0.8"/>
|
||||
<circle cx="27" cy="9" r="1" fill="white" opacity="0.6"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 326 B |
@@ -5,10 +5,10 @@ import "./globals.css";
|
||||
const inter = Inter({ subsets: ["latin"] });
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Padel Pro",
|
||||
title: "SmashPoint",
|
||||
description: "Sistema de Gestión para Clubes de Pádel",
|
||||
keywords: ["padel", "club", "reservas", "gestión", "deportes"],
|
||||
authors: [{ name: "Padel Pro Team" }],
|
||||
authors: [{ name: "SmashPoint Team" }],
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
|
||||
@@ -4,8 +4,19 @@ export default function Home() {
|
||||
return (
|
||||
<main className="min-h-screen flex flex-col items-center justify-center bg-gradient-to-br from-primary-50 to-primary-100">
|
||||
<div className="text-center space-y-8 px-4">
|
||||
{/* Logo */}
|
||||
<div className="flex justify-center">
|
||||
<div className="w-20 h-20 bg-amber-500 rounded-2xl flex items-center justify-center shadow-lg">
|
||||
<svg viewBox="0 0 40 40" className="w-12 h-12 text-white" fill="none">
|
||||
<path d="M22 4L8 22h10l-4 14L28 18H18l4-14z" fill="currentColor" />
|
||||
<circle cx="32" cy="8" r="2" fill="currentColor" opacity="0.8" />
|
||||
<circle cx="35" cy="12" r="1.2" fill="currentColor" opacity="0.6" />
|
||||
<circle cx="30" cy="4" r="1" fill="currentColor" opacity="0.5" />
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<h1 className="text-5xl md:text-6xl font-bold text-primary-800">
|
||||
Padel Pro
|
||||
SmashPoint
|
||||
</h1>
|
||||
<p className="text-xl md:text-2xl text-primary-600 max-w-2xl mx-auto">
|
||||
Sistema de Gestion para Clubes de Padel
|
||||
|
||||
Reference in New Issue
Block a user