(in progress)
🚀 Visual-first diffusion simulator (Thermo Calculations) Diffusion profiles render instantly—smooth gradients, fixed axes, tooltips, and motion—so you feel the physics (hello Fick’s S-curve) instead of reading a table. Little things (responsive charts, subtle animations, clear units) make the science approachable.
What’s inside
📈 Interactive diffusion profiles (μm vs wt%) with tooltips & legend
🎬 Micro-animations to “see” atoms mix across the interface
🗂️ Projects & calculations saved to a DB—run, review, repeat
✅ End-to-end types keep client ↔ server perfectly in sync
Stack (viz-heavy bits bolded) Frontend: React + Vite, TypeScript, Tailwind + shadcn/ui, lucide Data viz: Recharts (custom gradients, fixed domains, responsive), Framer Motion (micro-interactions) Forms/validation: React Hook Form + Zod (shared) API: tRPC on Fastify DB/ORM: Prisma + SQLite (JSON fields for results)
Next up: phase diagrams, progress streaming, exportable plots.
THERE ARE THREE WORKSPACES
- Server
- Root folder as frontend
- Packages / cntracts for Prisma Schema, Zod
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel (or oxc when used in rolldown-vite) for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])