Utilized the OpenAI API, React, NestJS, and TypeScript to help users find key info from articles or webpages. allowing users to highlight text and receive AI-generated summaries with a Chrome extension.
pnpm i --frozen-lockfile
pnpm build:chrome
pnpm start:backend
- Open chrome and load the
apps/chrome/dist
as an unpacked extension
pnpm i --frozen-lockfile
pnpm test
- Chrome extension: Create a Chrome extension with a popup that includes a button to enable/disable the feature and a list of summaries generated so far.
- React components: Create reusable React components for the popup, highlights list, and the summary tooltip.
- State management: Use React hooks and context API to manage the application state.
- TypeScript: Strictly use TypeScript throughout the project and ensure proper typing for all components and functions.
- Highlight functionality: When the feature is enabled, allow users to highlight text on a webpage by selecting it with their mouse.
- API integration: Integrate the OpenAI API to process the highlighted text and generate a brief summary.
- Display the summary: Show the summary in a tooltip when the user hovers over the highlighted text, using a custom React component.
- Backend: Implement a NestJS backend that will handle the API calls to OpenAI and any necessary processing.
- Data persistence: Store the user's highlights and summaries using MongoDB.
- Testing: Write unit tests for your code to ensure the proper functionality of the Chrome extension, with a focus on testing React components and TypeScript typings.
- Code quality, readability, and organization, with a focus on React and TypeScript
- Proper use of React, NestJS, and TypeScript, including typing, hooks, and context API
- Effective integration with OpenAI API and MongoDB
- Responsive and user-friendly design of the Chrome extension
- Completeness of the solution and extra features implemented
Future goals (Optional):
- User authentication: Implement a user authentication system using React components and context API, allowing users to access their saved highlights and summaries across devices.
- Tagging system: Allow users to categorize their highlights with tags for easier organization and retrieval. Use React components to display and manage tags.
- Export functionality: Enable users to export their highlights and summaries as a PDF, CSV, or other formats using a dedicated React component.