An interactive personal page webapp, with a custom-built wave visualisation with real-time modulation controls. Built with React and canvas animations, featuring mathematical wave synthesis, and a responsive user interface design.
- Interactive Wave Visualisation: Real-time oscilloscope display with mathematical wave rendering
- Modulation: Multiple AM/FM modulations with mouse-position control parameters
- Mathematical Formulas: KaTeX-rendered wave equations with tooltips
- Optimisation: Efficient canvas rendering with optimized mouse event handling, built for various screen sizes with modern CSS
- Accessibility: ARIA labels, keyboard navigation, and screen reader support
- Node.js (v18 or higher)
- npm, yarn, or pnpm package manager (this project uses pnpm)
- Clone the repository:
git clone https://github.com/DayByDayBy/page_of_things.git
cd page_of_things- Install dependencies:
# Using npm
npm install
# Using yarn
yarn install
# Using pnpm (recommended)
pnpm install- Start the development server:
# Using npm
npm start
# Using yarn
yarn start
# Using pnpm (recommended)
pnpm start- Open http://localhost:3000 in your browser.
pnpm start- Run development server with hot reloadingpnpm test- Run test suite in watch modepnpm build- Create production buildpnpm run predeploy- Build and prepare for deployment (lifecycle hook, runs automatically before deploy)
- Move your mouse around the screen to update X and Y for the wave-maths
- Toggle modulation layers using the control panel
- Real-time oscilloscope updates showing a snapshot of the waveform
- Hover over formulas to see detailed mathematical expressions
src/
├── components/
│ ├── Wavy/ # Wave visualisation components
│ └── WaveBackground.jsx
├── data/
│ └── projects.js # Projects data
├── pages/
│ └── ProjectsPage.jsx
├── state/
│ └── modulationReducer.js
├── styles/ # CSS modules
├── utils/
│ └── waveComputation.js
└── App.jsx # Main application component
- React 18 - UI framework with hooks
- React Router DOM - client-side routing
- KaTeX - mathematical formula rendering
- Canvas - performant graphics rendering
- CSS3 - simple styling with animations
- Jest & React Testing Library - testing framework
- Use GitHub Issues for bug reports and feature requests
- Include detailed descriptions and reproduction steps
- Add relevant screenshots when applicable
Run the test suite:
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test --watch
# Generate coverage report
pnpm test --coverageTest suite includes:
- Component rendering tests
- User interaction simulations
- Canvas mocking for graphics components
- Accessibility compliance tests
The application is configured for deployment to Vercel:
# Build for production
pnpm build
# Deploy to Vercel (if CLI is installed)
vercel --prodEnvironment variables and build settings are configured in vercel.json.
This project is licensed under the MIT License - see the LICENSE file for details.