diff --git a/ipcwebsite/.gitignore b/.gitignore similarity index 100% rename from ipcwebsite/.gitignore rename to .gitignore diff --git a/README.md b/README.md index 7394f5a..e215bc4 100644 --- a/README.md +++ b/README.md @@ -1 +1,36 @@ -# ipcwebsite \ No newline at end of file +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/app/about/page.tsx b/app/about/page.tsx new file mode 100644 index 0000000..0b121a1 --- /dev/null +++ b/app/about/page.tsx @@ -0,0 +1,87 @@ +export default function About() { + return ( +
+
+ {/* Hero */} +
+
+
+
+ Who We Are +
+

+ About Us +

+
+ +
+

+ A community of builders, creators, and problem solvers. +

+
+
+
+ + {/* Section 1 */} +
+
+ Programming Club + +
+

+ The Programming Club is a student-led community dedicated to + exploring software development, robotics, and computer science. + Whether you’re a curious beginner or an experienced coder, we + provide a welcoming space to grow and experiment. +

+
+
+
+ + {/* Section 2 */} +
+
+ + {/* Reverse order on large screens */} +
+

+ We host weekly workshops, hands-on coding sessions, collaborative + projects, and mentorship opportunities. Students are encouraged to + explore their interests and build real skills alongside teammates. +

+
+ + Workshops +
+
+ + {/* Section 3 */} +
+
+ Community + +
+

+ Our mission is to create a community where students learn at their + own pace while working together, building connections, and becoming + confident problem solvers. +

+
+
+
+
+
+ ); +} diff --git a/app/apcsa/page.tsx b/app/apcsa/page.tsx new file mode 100644 index 0000000..7b25da5 --- /dev/null +++ b/app/apcsa/page.tsx @@ -0,0 +1,75 @@ + +export default function APCSA() { + return ( +
+
+ + {/* Header */} +
+

+ Programming Club — AP Computer Science A +

+

+ Where experience, teamwork, and proven results meet. +

+
+ + {/* Stats Section */} +
+
+ 99% → 5 +
+

+ 99% of students who prepared for the AP Computer Science A exam through our Programming Club earned a top score of{" "} + 5. +

+

+ While 1% didn't want to learn +

+
+ + {/* What We Do */} +
+

+ What We Do +

+

+ Our AP CSA section helps students build strong foundations in Java and computer science principles. We mix{" "} + concept practice,{" "} + exam-style questions, and{" "} + hands-on projects that strengthen understanding and confidence for the AP exam and beyond. +

+
+ + {/* Why Take It With Us */} +
+

+ Why Take It With Us +

+
    +
  • + Experienced Instructors — Our student teachers have aced AP CSA themselves and have real coding experience. +
  • +
  • + Reliable Teaching — We focus on making everybody understand and master what they need for the test. +
  • +
  • + Supportive Community — Learn in a collaborative, friendly environment where you can ask anything. +
  • +
  • + Growth Beyond AP — We encourage students to think independently and learn smartly. +
  • +
+ + + Join a Session + +
+ +
+
+ ); +} diff --git a/app/contact/page.tsx b/app/contact/page.tsx new file mode 100644 index 0000000..19c6c0d --- /dev/null +++ b/app/contact/page.tsx @@ -0,0 +1,51 @@ +//dima work here +//dima work here +export default function Contact() { + return ( +
+
+ {/* Hero */} +
+
+
+
Get In Touch
+

+ Contact Us +

+
+
+

+ Have questions? Want to get involved? We'd love to hear from you. +

+
+
+
+ + {/* Contact Sections */} +
+
+
+

Email

+

interlakeprogrammingclub@gmail.com

+
+ +
+

Instagram

+

@interlake_programming

+
+ +
+

Meeting Location

+

Room 1809 every Thursday after school at 3:30 pm

+
+ +
+

Advisor

+

Dan Peterson - PetersonD@bsd405.org

+
+
+
+
+
+ ); +} diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..5ccd208 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,209 @@ +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +:root { + --shark-50: #f4f4f4; + --shark-100: #e8e8e8; + --shark-200: #c7c6c6; + --shark-300: #a5a4a4; + --shark-400: #616060; + --shark-500: #1d1c1c; + --shark-600: #1a1919; + --shark-700: #111111; + --shark-800: #0d0d0d; + --shark-900: #090808; + + --sunglo-50: #fef8f8; + --sunglo-100: #fdf2f1; + --sunglo-200: #fadddc; + --sunglo-300: #f7c9c6; + --sunglo-400: #f1a19c; + --sunglo-500: #eb7871; + --sunglo-600: #d46c66; + --sunglo-700: #8d4844; + --sunglo-800: #6a3633; + --sunglo-900: #472422; + + --alto-50: #fdfdfd; + --alto-100: #fbfbfb; + --alto-200: #f5f5f5; + --alto-300: #efefef; + --alto-400: #e4e4e4; + --alto-500: #d8d8d8; + --alto-600: #c2c2c2; + --alto-700: #828282; + --alto-800: #616161; + --alto-900: #414141; + + --storm-dust-50: #f7f7f7; + --storm-dust-100: #f0f0f0; + --storm-dust-200: #d8d8d8; + --storm-dust-300: #c1c1c1; + --storm-dust-400: #939393; + --storm-dust-500: #646464; + --storm-dust-600: #5a5a5a; + --storm-dust-700: #3c3c3c; + --storm-dust-800: #2d2d2d; + --storm-dust-900: #1e1e1e; + + --background: var(--shark-900); + --foreground: var(--alto-50); + --primary: var(--sunglo-500); + --primary-foreground: var(--shark-900); + --secondary: var(--shark-700); + --secondary-foreground: var(--alto-50); + --muted: var(--storm-dust-800); + --muted-foreground: var(--storm-dust-300); + --accent: var(--sunglo-600); + --accent-foreground: var(--alto-50); + --border: var(--shark-700); + --radius: 0.5rem; + + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.145 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.145 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.985 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.269 0 0); + --input: oklch(0.269 0 0); + --ring: oklch(0.439 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.269 0 0); + --sidebar-ring: oklch(0.439 0 0); +} + +@theme inline { + --font-sans: "Geist", "Geist Fallback"; + --font-mono: "Geist Mono", "Geist Mono Fallback"; + + --color-shark-50: var(--shark-50); + --color-shark-100: var(--shark-100); + --color-shark-200: var(--shark-200); + --color-shark-300: var(--shark-300); + --color-shark-400: var(--shark-400); + --color-shark-500: var(--shark-500); + --color-shark-600: var(--shark-600); + --color-shark-700: var(--shark-700); + --color-shark-800: var(--shark-800); + --color-shark-900: var(--shark-900); + + --color-sunglo-50: var(--sunglo-50); + --color-sunglo-100: var(--sunglo-100); + --color-sunglo-200: var(--sunglo-200); + --color-sunglo-300: var(--sunglo-300); + --color-sunglo-400: var(--sunglo-400); + --color-sunglo-500: var(--sunglo-500); + --color-sunglo-600: var(--sunglo-600); + --color-sunglo-700: var(--sunglo-700); + --color-sunglo-800: var(--sunglo-800); + --color-sunglo-900: var(--sunglo-900); + + --color-alto-50: var(--alto-50); + --color-alto-100: var(--alto-100); + --color-alto-200: var(--alto-200); + --color-alto-300: var(--alto-300); + --color-alto-400: var(--alto-400); + --color-alto-500: var(--alto-500); + --color-alto-600: var(--alto-600); + --color-alto-700: var(--alto-700); + --color-alto-800: var(--alto-800); + --color-alto-900: var(--alto-900); + + --color-storm-dust-50: var(--storm-dust-50); + --color-storm-dust-100: var(--storm-dust-100); + --color-storm-dust-200: var(--storm-dust-200); + --color-storm-dust-300: var(--storm-dust-300); + --color-storm-dust-400: var(--storm-dust-400); + --color-storm-dust-500: var(--storm-dust-500); + --color-storm-dust-600: var(--storm-dust-600); + --color-storm-dust-700: var(--storm-dust-700); + --color-storm-dust-800: var(--storm-dust-800); + --color-storm-dust-900: var(--storm-dust-900); + + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..8784483 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,30 @@ +import type React from "react"; +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; +import { Footer, Navigation } from "@/components"; + +const _geist = Geist({ subsets: ["latin"] }); +const _geistMono = Geist_Mono({ subsets: ["latin"] }); + +export const metadata: Metadata = { + title: "Interlake Programming Club | Code, Compete, Create", + description: + "Join our community of passionate programmers. Compete in USACO, master APCSA, and build amazing projects together.", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + {children} +