Interactive viewer for EPA EPI Suite™ chemical properties predictions. This repository is a frontend test assignment that displays some chemical property. The app consumes a RESTful API and presents scientific data in organized tabbed sections with model descriptors, analogs matching, and detailed property estimations.
- Nuxt 4 (Composition API + TypeScript)
- @nuxt/ui / Tailwind CSS
- openapi-typescript (auto-generated API types)
- Vue 3 Composition API
Prerequisites: Node.js (LTS) and pnpm.
Install and run the dev server:
pnpm install
pnpm devBuild / preview:
pnpm build
pnpm previewpages/index.vue— main dashboard displaying chemical properties with tabbed interfacecomponents/— UI building blocks:LogKowCard.vue— Log K_OW property section with tabsMPBPCard.vue— Melting/Boiling Point property section with tabsChemicalPropertiesCard.vue— displays basic chemical infoChemicalPropertyDisplay.vue— shows individual chemical property with label (used in ChemicalPropertiesCard)CardTitle.vue— section header with description and guide linkSelectedValueCard.vue— highlight selected property value with unitsSummaryTabLayout.vue— layout wrapper for summary tab sectionsSummaryTable.vue— tabular display of estimated and experimental values (Nuxt UI Table)ModelDescriptorsTable.vue— tabular display of descriptors (Nuxt UI Table)LoadingCard.vue— loading state placeholder when fetching data for ChemicalPropertiesCard
composables/— reusable logic:useEpiSuiteApi.ts— fetches chemical properties from EPI Suite APIuseLoadAnalogs.ts— loads analog compounds for comparison
types/— TypeScript definitions:episuite-api.d.ts— auto-generated from OpenAPI spec
utils/— helper functions:utils.ts— value formatting with unit conversion
- GET https://episuite.dev/EpiWebSuite/api/submit?cas=XXXXXX-XX-X
- Query param:
cas(chemical CAS number) - Response:
SubmitResultobject containing:
- Query param:
- GET https://episuite.dev/EpiWebSuite/api/draw-chemical?smiles=SMILES
- Query param:
smiles - Response:
Blob(SVG image of chemical structure)
- Query param:
- Tabbed interface: Two main property sections (Log K_OW, Melting/Boiling Point) each with Summary, Model Descriptors, and AIM Analogs tabs
- Analog compounds: Dynamic loading of structurally similar compounds for property comparison
- Value formatting: Automatic conversion of large numbers to scientific notation, unit display (°C, °K)
- Lazy loading: To show loading state while opening the page
Epi Suite - https://episuite.dev/EpiWebSuite/