A collaborative web-based platform designed to help researchers connect across New Zealand. Share and exchange labratory reagents to minimise waste.
- Reduce Waste: Minimise environmental wastage by exchanging unused chemicals.
- Save Money: Avoid unecessary bulk purchasing and source affordable materials.
- Foster Collaboration: Connect researchers across institutions to strengthen the scientific community, share knowledge and resources.
https://github.com/uoa-compsci399-s2-2025/capstone-project-s2-2025-team-2/projects?query=is%3Aopen
- TypeScript 5.9.2
- Next.js 15.4.4
- React 19.1.0
- React DOM 19.1.0
- Tailwind CSS 4.1.13
- openapi-fetch 0.14.0
- openapi-typescript 7.9.1
- next-themes 0.4.6
- sonner 2.0.7
- react-icons 5.5.0
- @mui/icons-material 7.3.2
- @heroicons/react 2.2.0
- Node.js
- Express 5.1.0
- TSOA 6.6.0
- swagger-jsdoc 6.2.8
- swagger-ui-express 5.0.1
- body-parser 2.2.0
- cors 2.8.5
- helmet 8.1.0
- Firebase 12.3.0
- Firebase Admin 13.5.0
- Google Auth Library 10.3.0
- nodemailer 7.0.6
- node-cron 4.2.1
- zod 4.1.11
- uuid 13.0.0
- dotenv 16.6.1
- pnpm 10.7.1
- ESLint 9.36.0
- Prettier 3.6.2
- Storybook 9.1.10
- ts-node 10.9.2
- tsc-alias 1.8.16
- concurrently 9.2.1
- Node.js
- pnpm
- Git
git clone git@github.com:uoa-compsci399-s2-2025/capstone-project-s2-2025-team-2.git
cd capstone-project-s2-2025-team-2Install dependencies for all workspaces:
pnpm installCreate environment variable files for both client and server:
- Create a
.envfile in both theserver/andclient/directory - Enter their respective variables disclosed in the assignment submission.
Generate TypeScript types from the OpenAPI specification:
pnpm generate:typesThis will:
- Generate OpenAPI spec and routes using TSOA
- Generate TypeScript types for the client from the OpenAPI spec
Run both the client (Next.js) and server (Express)
pnpm run dev- Frontend: http://localhost:3000
- Backend: http://localhost:8000
- Swagger UI: http://localhost:8000/swagger
- Navigate to
/auth - Click Sign Up
- Enter your email, click "Verify"
- Recieve verification code in email, enter code and click "Validate"
- Click "Next Page"
- Enter user details (display name, institution)
- Sign up or sign in to your account
- Navigate to the Marketplace (
/marketplace) - Click the "+" button in the bottom right corner
- Fill in the reagent details:
- Name, description, quantity, unit
- Category (chemical, hazardous, biological)
- Trading type (sell, trade, giveaway)
- Expiry date
- Images
- Location
- Price (if sell type)
- Set visibility (public, private, institution-only)
- Indicate restricted access
- Submit listing
- Navgigate to the Marketplace (
/marketplace) - Use the search bar to find specific reagents
- Filter by category, condition, or trading type (set filter and enter text in the search bar)
- Sort by expiry date or name
- View reagent details by clicking on a card]
- Navigate to profile through sidebar navigation (Profile Button)
- View and sort through your reagent inventory
- Edit user information using the pencil icon next to name
- Find your own listing in
/marketplaceor your profile - Click "Edit" on the card
- Update fields and save; changes appear immediately
- Open a reagent's details page through
/marketplace - Click "Request"
- Provide message/price/reagent as required and submit
- Track outgoing requests on
/requests
- In
/requestsor/offers- View transaction details with the "View" button at the bottom of each reagent card
- Open chat
- Confirm/Decline trade (processed transactions are moved to
/history)
- Open
/inboxto view conversations (each conversation is tied to a specific order) - Select a conversation to chat with the other user
- "View Listing" button to redirect to reagent details page
- "Edit Request" button to bring up
- Visit
/historyto view past request transactions
- Navigate to
/bountyboard - Create a bounty for any reagent you seek but is currently unlisted
- Browse board to find any bounties you are able to fufill, make a subsequent offer
For future releases we plan to add:
- Enhanced Search: Advanced filtering options including price and date range, location based search
- Custom Tags: Allow users to add new categories to list their reagents under
- Rating and Review System: Allow users to rate others and leave reviews
- Notification System: Real-time notifications for new requests, messages, and expiring reagents
- Analytics Dashboard: Provide users with insights into their environmental impact (AI calculated)
- Partial Quantity Trading: Ability to specify and exchange specific quantities from a reagent listing
- Advanced Messaging Features: Read receipts, file sharing, image attachments in messages
- TSOA boilerplate
A BIG, big thank you to:
- Our Clients, David and Wandia
- Our Teachers, Anna and Asma