Skip to content

A portfolio template built for a customer using Next.js, AdminJS, and TailwindCSS.

Notifications You must be signed in to change notification settings

patrik-fredon/dj_portfolio

Repository files navigation

DJ Portfolio Application

React TypeScript Node.js Tailwind CSS Express MongoDB

A professional portfolio website for DJs with an integrated admin panel for managing content and responding to inquiries. This full-stack application showcases music, events, a gallery, and offers contact functionality.

✨ Features

  • Responsive Design - Optimized for all device sizes
  • Music Showcase - Display tracks with interactive audio player
  • Image Gallery - Categorized gallery with modal view
  • Contact Form - Integrated with email notifications
  • Admin Panel - Secure access to manage inquiries
  • Animations - Smooth scroll reveal and transition effects
  • Modern UI - Clean, professional interface with Tailwind CSS and shadcn/ui

πŸ› οΈ Tech Stack

Frontend

Backend

FredonBytes DJ Portfolio Preview

πŸ—‚οΈ Project Structure

/
β”œβ”€β”€ backend/               # Backend Express application
β”‚   β”œβ”€β”€ components/        # AdminJS UI components
β”‚   β”œβ”€β”€ config/            # Database configuration
β”‚   β”œβ”€β”€ models/            # Mongoose schemas
β”‚   β”œβ”€β”€ utils/             # Backend utilities
β”‚   └── server.js          # Main server file
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/        # React components
β”‚   β”‚   β”œβ”€β”€ contact/       # Contact-related components
β”‚   β”‚   └── ui/            # Reusable UI components
β”‚   β”œβ”€β”€ hooks/             # Custom React hooks
β”‚   β”œβ”€β”€ lib/               # Frontend utilities
β”‚   β”œβ”€β”€ pages/             # Route pages
β”‚   └── types/             # TypeScript type definitions
β”œβ”€β”€ public/                # Static assets
└── ...config files

πŸš€ Getting Started

Prerequisites

  • Node.js 18+ and npm/yarn
  • MongoDB database

Installation

  1. Clone the repository
git clone https://github.com/patrik-fredon/dj-portfolio.git
cd dj-portfolio
  1. Install dependencies
# Install frontend dependencies
npm install

# Install backend dependencies
cd backend
npm install
cd ..
  1. Environment Setup

Create .env files based on the examples:

Frontend .env:

VITE_API_URL=http://localhost:5000
VITE_ADMIN_URL=http://localhost:5000/admin

Backend .env:

MONGODB_URI=your_mongodb_connection_string
PORT=5000
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=secure_password
SMTP_HOST=smtp.your-provider.com
SMTP_PORT=587
SMTP_USER=your-email@example.com
SMTP_PASS=your-email-password
SESSION_SECRET=your-session-secret
  1. Run the application
# Run frontend and backend concurrently in development mode
npm run dev

The frontend will be available at http://localhost:8080 and the backend at http://localhost:5000

API Endpoints

Endpoint Method Description
/api/contact POST Submit a contact message
/admin GET Admin panel interface
/ GET API health check

πŸ’Œ Contact Form

The application includes a contact form that:

  1. Validates user input
  2. Stores messages in MongoDB
  3. Sends email notifications to administrators
  4. Can be managed through the admin panel

Email sending is handled by the mailer.js utility using Nodemailer.

πŸ” Admin Panel

The application features an admin panel powered by AdminJS:

  • Message management
  • Status tracking (unread/read/replied)
  • Filtering and searching messages
  • Authentication system

Access the admin panel at /admin with the credentials set in your .env file.

πŸ”’ Security Features

  • CSRF protection
  • Content Security Policy
  • Secure session cookies
  • Rate limiting
  • Input validation
  • Environment variable protection

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘¨β€πŸ’» Author

Patrik Fredon - FredonBytes


Β© 2025 FredonBytes | Bringing your vision to life

About

A portfolio template built for a customer using Next.js, AdminJS, and TailwindCSS.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published