Skip to content

nisha8c/thermo-calculations

Repository files navigation

Thermal Calculations Demo project

(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.

some screen shots of ongoing developemnet

screen DiffAnimation proj createPr EditProj PhaseD-1 PhaseD2 Equ

NOTE

THERE ARE THREE WORKSPACES

  1. Server
  2. Root folder as frontend
  3. Packages / cntracts for Prisma Schema, Zod

React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

React Compiler

The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.

Expanding the ESLint configuration

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...
    },
  },
])

About

Data visualisation purpose - in progress

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages