A generic, Markdown-based project portfolio and team showcase application built with React and TypeScript.
- Project Showcase: Display projects with images, descriptions, tags, and links.
- Team Page: Showcase team members with avatars and bio.
- Markdown Support: Content for projects and team members is stored as markdown-like strings in the
content/directory, supporting rich text and images. - Filtering: Search and filter projects by tags.
- Responsive: Fully responsive design using Tailwind CSS.
content/projects/*.ts: Add new project files here.content/team/*.ts: Add new team member files here.content/projects.ts&content/team.ts: Aggregator files. You must import your new files here to make them visible.constants.ts: Global configuration and data processing logic.
-
Install Dependencies
npm install
-
Start Development Server
npm run dev
Open http://localhost:3000 to view it in the browser.
This project is configured to use Vite for building static assets.
- Push your code to a GitHub/GitLab repository.
- Log in to the Cloudflare Dashboard.
- Go to Workers & Pages > Create Application > Pages > Connect to Git.
- Select your repository.
- Configure the build settings:
- Framework Preset:
Vite - Build command:
npm run build - Build output directory:
dist
- Framework Preset:
- Click Save and Deploy.
- Build the project locally:
npm run build
- This will create a
distfolder in your project root. - Go to Cloudflare Pages and select "Direct Upload" to upload the
distfolder.
To add a new project, create a file in content/projects/my-new-project.ts following the existing pattern, and register it in content/projects.ts.
The application supports both external URLs (e.g., https://...) and local paths. If using local images, place them in the public/ directory (create it if it doesn't exist) and reference them like /my-image.jpg.
Place team member avatar images in this folder.
- Use the member's ID as the filename (e.g.,
gemini.jpg,daocatt.png) - Supported formats:
.jpg,.jpeg,.png,.webp
- Size: 200x200px to 400x400px (square)
- Format: JPG or PNG
- File size: Keep under 200KB for optimal loading
Reference avatars in team member files like this:
avatar: /avatars/gemini.jpg
The /avatars/ path is relative to the public directory.