Changeset 636f86c


Ignore:
Timestamp:
09/25/25 16:30:46 (12 months ago)
Author:
stefansaveski <stefansaveski19@…>
Branches:
master
Children:
6b8332f
Parents:
875f7d6
Message:

Add initial data files for applications, documents, semesters, student profiles, and subjects

  • Created applications.json with exam sessions and application details for 2024 and 2025.
  • Added documents.json containing various document types and their associated fees.
  • Introduced semesters.json with details of semesters, including status and financial information.
  • Established student-profile.json with personal and educational information for a sample student.
  • Implemented subjects.json detailing subjects offered per semester along with their respective professors and statuses.
Location:
src
Files:
12 added
3 edited

Legend:

Unmodified
Added
Removed
  • src/app/layout.tsx

    r875f7d6 r636f86c  
    22import { Geist, Geist_Mono } from "next/font/google";
    33import "./globals.css";
    4 import '@fortawesome/fontawesome-svg-core/styles.css';
    5 import { config } from '@fortawesome/fontawesome-svg-core';
     4import "@fortawesome/fontawesome-svg-core/styles.css";
     5import { config } from "@fortawesome/fontawesome-svg-core";
     6import Header from "@/components/header";
     7import Navbar from "@/components/navbar";
    68
    79// Prevent FontAwesome from adding CSS automatically
     
    2022export const metadata: Metadata = {
    2123  title: "IKnow - UKIM",
    22   description: "University Managment System used to provide students informations and manage their progress.",
     24  description:
     25    "University Managment System used to provide students informations and manage their progress.",
    2326};
    2427
     
    3033  return (
    3134    <html lang="en">
    32       <body
    33         className={`${geistSans.variable} ${geistMono.variable} antialiased`}
    34       >
    35         <div className="mx-auto max-w-6xl px-4">{children}</div>
     35      <body className={`${geistSans.variable} ${geistMono.variable} antialiased`}>
     36        <div className="mx-auto max-w-6xl px-4">
     37          <Header />
     38          <Navbar />
     39          {children}
     40        </div>
    3641      </body>
    3742    </html>
  • src/app/page.tsx

    r875f7d6 r636f86c  
    11import Image from "next/image";
    2 import Navbar from "@/components/navbar";
    3 import Header from "@/components/header";
    4 import Exams from "@/components/exams";
    52
    63export default function Home() {
    74  return (
    85    <>
    9       <Header></Header>
    10       <Navbar></Navbar>
    11       <Exams></Exams>
     6     
    127    </>
    138  );
  • src/components/navbar.tsx

    r875f7d6 r636f86c  
    99import { faBars, faTimes, faGraduationCap } from '@fortawesome/free-solid-svg-icons';
    1010import { useState } from 'react';
     11import Link from 'next/link';
    1112
    1213const Navbar = () => {
     
    1819
    1920  const menuItems = [
    20     { icon: faUser, label: 'Профил' },
    21     { icon: faBookmark, label: 'Семестри' },
    22     { icon: faBook, label: 'Предмети' },
    23     { icon: faPenToSquare, label: 'Пријави' },
    24     { icon: faListCheck, label: 'Положени' },
    25     { icon: faFilePdf, label: 'Документи' }
     21    { icon: faUser, label: 'Профил', href: '/profile' },
     22    { icon: faBookmark, label: 'Семестри', href: '/semesters' },
     23    { icon: faBook, label: 'Предмети', href: '/subjects' },
     24    { icon: faPenToSquare, label: 'Пријави', href: '/applications' },
     25    { icon: faListCheck, label: 'Положени', href: '/exams' },
     26    { icon: faFilePdf, label: 'Документи', href: '/documents' }
    2627  ];
    2728
     
    3132      <nav className="hidden md:flex flex-row gap-2 justify-evenly bg-primary text-white p-7 rounded-xl my-5 text-xl">
    3233        {menuItems.map((item, index) => (
    33           <div key={index} className="group flex flex-row items-center gap-2 px-3 py-2 rounded-lg cursor-pointer transition-all duration-300 hover:bg-white hover:bg-opacity-20 hover:scale-105 hover:shadow-lg hover:text-primary">
    34             <FontAwesomeIcon icon={item.icon} className="transition-transform duration-300 group-hover:rotate-12" />
    35             <span>{item.label}</span>
    36           </div>
     34          <Link key={index} href={item.href}>
     35            <div className="group flex flex-row items-center gap-2 px-3 py-2 rounded-lg cursor-pointer transition-all duration-300 hover:bg-white hover:bg-opacity-20 hover:scale-105 hover:shadow-lg hover:text-primary">
     36              <FontAwesomeIcon icon={item.icon} className="transition-transform duration-300 group-hover:rotate-12" />
     37              <span>{item.label}</span>
     38            </div>
     39          </Link>
    3740        ))}
    3841      </nav>
     
    6568          <div className="px-4 pb-4 space-y-2">
    6669            {menuItems.map((item, index) => (
    67               <div key={index} className="group flex flex-row items-center gap-3 px-3 py-3 rounded-lg cursor-pointer transition-all duration-300 hover:bg-white hover:bg-opacity-20 hover:text-primary">
    68                 <FontAwesomeIcon icon={item.icon} className="transition-transform duration-300 group-hover:rotate-12" />
    69                 <span className="text-lg">{item.label}</span>
    70               </div>
     70              <Link key={index} href={item.href}>
     71                <div className="group flex flex-row items-center gap-3 px-3 py-3 rounded-lg cursor-pointer transition-all duration-300 hover:bg-white hover:bg-opacity-20 hover:text-primary">
     72                  <FontAwesomeIcon icon={item.icon} className="transition-transform duration-300 group-hover:rotate-12" />
     73                  <span className="text-lg">{item.label}</span>
     74                </div>
     75              </Link>
    7176            ))}
    7277          </div>
Note: See TracChangeset for help on using the changeset viewer.