A modern web application for managing and searching sports fixtures, built with Next.js and MongoDB.
- π CSV Upload: Upload and parse CSV files containing sports fixture data
- π Real-time Search: Search for fixtures by team name with instant results
- π Detailed View: Click on fixtures to see detailed information
- π± Responsive Design: Works seamlessly on desktop and mobile devices
- π¨ Modern UI: Enhanced with animations and visual effects
- π Frontend: Next.js 15, React 19, Tailwind CSS
- π Backend: Next.js API routes
- ποΈ Database: MongoDB with Mongoose
- π Styling: Tailwind CSS, shadcn/ui components
- β¨ Animation: Motion.js for smooth transitions and effects
- π Data Parsing: PapaParse for CSV handling
- Node.js 18.17.0 or later
- MongoDB database (local or Atlas)
Create a .env.local file in the root of the project with the following variables:
MONGODB_URI=your_mongodb_connection_string
- Clone the repository
git clone https://github.com/your-username/fixture-app.git
cd fixture-app/frontend- Install dependencies
npm install- Run the development server
npm run dev- Open http://localhost:3000 in your browser
npm run build
npm startfrontend/
βββ public/ # Static assets
βββ src/
β βββ app/ # Next.js App Router
β β βββ api/ # API Routes
β β βββ components/ # Page-specific components
β β βββ search/ # Search page
β β βββ page.tsx # Home page
β βββ components/ # Shared components
β β βββ animate-ui/ # Animation components
β β βββ motion-primitives/ # Motion components
β β βββ ui/ # UI components
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utilities and libraries
β βββ models/ # MongoDB models
β βββ types/ # TypeScript type definitions
βββ ...config files
This project is deployed on Vercel: https://fixture-app.vercel.app/
The application expects CSV files with the following columns:
- π
fixture_mid: Unique identifier for each fixture - π
season: Season year - π
competition_name: Name of the competition - β°
fixture_datetime: Date and time of the fixture - π
fixture_round: Round number - π
home_team: Home team name - π
away_team: Away team name
