Official website for BSidesTLV 2025 cybersecurity conference, built with Next.js 15, featuring mobile-responsive design and dynamic content management.
- Historical CTF results from 2022-2024
- Challenge categories and participation information
- Practice resources and registration details
- Dynamic speaker profiles via Sessionize API
- Real-time agenda updates
- Automatic fallback to static content when API is unavailable
- Hamburger navigation menu for mobile devices
- Optimized layouts for desktop, tablet, and mobile
- Comprehensive Playwright testing for all screen sizes
- Easy-to-maintain content using MDX files
- Structured data files for speakers, team members, and event information
- Consistent styling with Tailwind CSS components
-
Clone the repository
-
Install dependencies:
pnpm install
-
Install Playwright browsers:
pnpm exec playwright install -
Set up environment variables (optional):
# Create .env.local with your Sessionize event ID SESSIONIZE_EVENT_ID=your_event_id_here -
Run the development server:
pnpm dev
-
Open http://localhost:3000 in your browser
See DEVELOPMENT.md for comprehensive development guidelines, best practices, and troubleshooting.
# Before submitting any changes:
pnpm lint # ✅ Lint code
pnpm build # ✅ Build project
pnpm test # ✅ Run all testspnpm dev- Start development serverpnpm build- Build for productionpnpm start- Start production serverpnpm lint- Run ESLintpnpm test- Run Playwright testspnpm test:headed- Run tests with browser UIpnpm test:debug- Debug tests interactively
├── app/ # Next.js app directory
│ ├── components/ # Reusable React components
│ ├── ctf/ # CTF competition page
│ ├── speakers/ # Speakers page with Sessionize integration
│ ├── agenda/ # Event agenda with dynamic content
│ └── ... # Other pages
├── data/ # Structured data files
│ ├── ctf/ # CTF historical data
│ ├── team/ # Team member information
│ └── sponsors/ # Sponsor information
├── lib/ # Utility functions
│ └── api/ # API integration (Sessionize)
├── tests/ # Playwright test files
└── mdx-components.tsx # MDX component definitions
- Framework: Next.js 15 with App Router
- Package Manager: pnpm
- Styling: Tailwind CSS
- Content: MDX for maintainable content
- Testing: Playwright for e2e testing
- API: Sessionize integration for dynamic content
- TypeScript: Full type safety
If you encounter lockfile issues:
rm package-lock.json # Remove npm lockfile
pnpm install --no-frozen-lockfile # Update pnpm lockfilepnpm exec playwright installFor more detailed troubleshooting, see DEVELOPMENT.md.
- Follow the development guidelines in DEVELOPMENT.md
- Always run the full test suite before submitting changes
- Ensure mobile responsiveness on all changes
- Test API integrations and fallback behavior
This project is licensed under the MIT License.