A modern, responsive website for the DISSECT research group, built with React and Vite. DISSECT is a research-driven initiative focused on advancing cybersecurity best practices across internet-based services, with particular emphasis on supporting public sector institutions.
- Dynamic Content Management: All key content (publications, projects, team members) loaded from JSON files for easy updates
- Responsive Design: Fully responsive layout that works seamlessly on desktop, tablet, and mobile devices
- Modern UI: Clean, professional design using TailwindCSS with a consistent gray theme
- Fast Performance: Built with Vite for lightning-fast development and optimized production builds
- Easy Customization: Simple JSON-based content management system
- React 19 - UI library
- Vite 5 - Build tool and development server
- React Router DOM v6 - Client-side routing
- TailwindCSS - Utility-first CSS framework
- TypeScript - Type-safe component development
- Lucide React - Icon library
new-website/
├── public/
│ ├── data/
│ │ ├── publications.json # Research publications data
│ │ ├── projects.json # Active projects data
│ │ └── members.json # Team members data
│ └── images/
│ ├── logo-dissect.png # DISSECT logo
│ └── team/ # Team member profile images
├── src/
│ ├── components/
│ │ ├── Header.tsx # Navigation header
│ │ ├── Footer.tsx # Site footer
│ │ └── Layout.tsx # Page layout wrapper
│ ├── pages/
│ │ ├── Home.tsx # Landing page
│ │ ├── About.tsx # About DISSECT & Opt-out form
│ │ ├── Team.tsx # Team members page
│ │ ├── Projects.tsx # Research projects page
│ │ ├── Publications.tsx # Publications page
│ │ └── NotFound.tsx # 404 page
│ ├── App.tsx # Main app component with routes
│ └── main.tsx # Application entry point
└── package.json
- Node.js (version 16 or higher)
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd new-website- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:5173
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build locallynpm run lint- Run ESLint
Edit /public/data/publications.json:
{
"id": 1,
"title": "Your Publication Title",
"authors": ["Author 1", "Author 2"],
"venue": "Conference/Journal Name",
"year": 2026,
"type": "Conference",
"doi": "10.1234/example",
"pdf": "https://link-to-pdf.com",
"abstract": "Your abstract text here..."
}Publications are automatically sorted by ID in descending order (newest first). Abstracts are truncated to 200 characters on display.
Edit /public/data/projects.json:
{
"id": 1,
"name": "Project Name",
"description": "Project description",
"icon": "Shield",
"tags": ["tag1", "tag2"],
"github": "https://github.com/...",
"demo": "https://demo-link.com",
"status": "Active"
}Available icons: Shield, Code, Search (from Lucide React)
Edit /public/data/members.json:
{
"id": 1,
"name": "Dr. Jane Doe",
"position": "Principal Investigator",
"bio": "Brief biography...",
"email": "jane.doe@dissect.research",
"github": "https://github.com/janedoe",
"linkedin": "https://linkedin.com/in/janedoe",
"website": "https://janedoe.com",
"image": "jane-doe.jpg"
}Profile Images: Place images in /public/images/team/ and reference the filename in the image field. If no image is provided, initials will be displayed instead.
Social Links: All fields (email, github, linkedin, website) are optional. Icons only appear when the corresponding field exists.
In /src/pages/About.tsx, replace YOUR_GOOGLE_FORM_URL_HERE with your Google Form embed URL:
- Open your Google Form
- Click "Send" → Click the
<>(embed) icon - Copy the URL from the
srcattribute - Paste it into the iframe
srcin About.tsx
The site uses a gray theme (gray-800/gray-900). To change colors, search and replace color classes in the component files.
Replace /public/images/logo-dissect.png with your logo. The current sizing uses h-72 with negative margins for optimal display.
Global styles are in /src/index.css. TailwindCSS configuration is in tailwind.config.js.
npm run buildThe production-ready files will be in the dist/ directory.
The built site can be deployed to any static hosting service:
- Vercel: Connect your repository and deploy automatically
- Netlify: Drag and drop the
dist/folder or connect via Git - GitHub Pages: Use GitHub Actions to build and deploy
- Any static host: Upload the contents of
dist/folder
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
See LICENSE file for details.
For questions about DISSECT, visit the website or contact the team through the information provided on the site.