Skip to content

Latest commit

 

History

History
42 lines (34 loc) · 3.13 KB

Backend.md

File metadata and controls

42 lines (34 loc) · 3.13 KB

Backend Documentation

Backend Framework

  • Framework: Node.js with Express.js
    Rationale: Node.js with Express.js is cost-effective, widely adopted, and scales well. Its non-blocking I/O model and robust ecosystem make it ideal for building RESTful APIs and handling asynchronous operations, such as web scraping and email extraction.

API Design

  • Approach: RESTful API design with versioning
    Rationale:
    • RESTful APIs are straightforward, scalable, and widely understood.
    • Versioning: We'll use URL versioning (e.g., /api/v1/...) to ensure future enhancements can be introduced without breaking existing integrations.
    • Naming Conventions: Standard, resource-oriented naming conventions will be applied (e.g., /api/v1/articles, /api/v1/users) for clarity and consistency.

Authentication and Authorization

  • Approach: JSON Web Tokens (JWT) combined with Passport.js for multiple authentication strategies
    Rationale:
    • Email/Password Authentication: Provides a traditional and secure way for users to create accounts and log in.
    • Social Logins: Incorporating social authentication (e.g., Google, Facebook) offers users convenience and can help increase sign-up rates.
    • Passport.js: This library supports a wide range of authentication strategies, making it a versatile choice for implementing both email/password and social logins.
    • JWT: Once authenticated, JWTs will be used to securely manage sessions in a stateless manner.

Third-Party Integrations

  • Web Scraping:
    To keep costs low and use free, open-source solutions, we suggest the following:

    • Cheerio: A fast, lightweight library for parsing HTML and traversing the DOM in Node.js. It works similarly to jQuery and is ideal for extracting content from static pages.
    • Axios: A promise-based HTTP client to make HTTP requests and retrieve webpage content.
    • Puppeteer (Optional): For cases where target websites rely heavily on JavaScript to render content, Puppeteer (a headless Chrome Node API) can be used. It is open-source and free, though more resource-intensive compared to Cheerio.
  • Email Extraction:

    • Utilize simple regular expressions (regex) within Node.js to locate and extract email addresses from the scraped content.
    • Alternatively, consider using lightweight libraries such as email-extractor if additional parsing features are needed.
  • Content Analysis:

    • Incorporate natural language processing (NLP) tools (e.g., Natural, compromise.js, or external NLP APIs) to extract keywords, subjects, and themes from user-submitted articles.

Database

  • Database: MongoDB with Mongoose ODM
    Rationale:
    • MongoDB is a flexible, NoSQL document-based database that stores data in JSON-like documents.
    • Mongoose provides an ODM layer to enforce schemas and validations, ensuring that documents are consistently formatted when passed across various modules (web scraping, content analysis, email extraction, etc.).
    • This combination allows for rapid development and scalability while maintaining structured data flow throughout the application.