A full-stack web application to explore NASA's technology patents. Built for educational exploration and personal research organization.
- Search NASA Patents via the TechTransfer API
- Detailed Patent Views with modal interface
- Stash System to preview saved patents
- Profile Management with persistent saves
- Notes, URLs, and Tags per patent
- Tag Filtering for fast lookup
- User Authentication (Sign Up & Login)
- Material UI + Framer Motion animations
All requests are prefixed with /api.
| Method | Endpoint | Description |
|---|---|---|
| GET | /nctaccount |
Retrieve all accounts |
| POST | /nctaccount |
Register a new user |
| GET | /nctaccount/:accountId |
Get user by ID |
| PUT | /nctaccount/:accountId |
Update user data |
| POST | /nctaccount/login |
Login user |
| Method | Endpoint | Description |
|---|---|---|
| GET | /handlePatents/:accountId |
Get all saved patents for user |
| POST | /handlePatents/:accountId |
Add new patent to user profile |
| GET | /handlePatents/:accountId/:patentId |
Get one patent by ID |
| PUT | /handlePatents/:accountId/:patentId |
Update notes, tags, URLs |
| DELETE | /handlePatents/:accountId/:patentId |
Remove patent from user profile |
| Method | Endpoint | Description |
|---|---|---|
| GET | /nasaApi/:search |
Search patents from NASA API |
- React (frontend) uses
fetch()to communicate with Express (backend). - State is shared across routes via React Router using
useSearchParamsoruseParams. - Data is stored in a MongoDB collection named
accounts, each user with apatentsarray.
{
"_id": ObjectId,
"username": String,
"email": String,
"password": String,
"patents": [
{
"id": String,
"data": Array,
"notes": String,
"tags": [String],
"urls": [String]
}
]
}project-root/
├── frontend/
│ └── src/
│ ├── App.jsx
│ ├── components/
│ ├── assets/
│ └── main.jsx
├── backend/
│ ├── server.js
│ ├── api/
│ └── config/
├── Documents/
│ └── (project writeups, diagrams, reports)
└── README.md
cd frontend
npm install
npm install react react-dom react-router-dom
npm install @mui/material @emotion/react @emotion/styled
npm install lucide-react
npm install framer-motioncd backend
npm install
npm install express cors body-parser mongodb
npm install -g nodemon
nodemon server.js- Install MongoDB Community Edition
- Create a database:
NCT127 - Create a collection:
accounts - Ensure the MongoDB URI and port in
config/db.jsmatch your local MongoDB setup
Danton Dang
- Frontend: PatentView, Profile, View/Edit Notes, Stash Page
- Backend: CRUD endpoints for accounts and patents
Evan
- Frontend: Navbar, Dropdowns, Login/Signup
- Backend: User authentication routes and validation logic