#1 Update Documentation #665

开启中
savio 请求将 9 次代码提交从 savio/issue_665 合并至 savio/master
共有 4 个文件被更改,包括 505 次插入47 次删除
  1. 二进制
      .github/newscout_text_light.png
  2. 438 46
      README.md
  3. 50 0
      src/api/data.js
  4. 17 1
      src/api/urls.js

二进制
.github/newscout_text_light.png


+ 438 - 46
README.md

@@ -1,79 +1,471 @@
-This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
 
-# Getting Started
+<div align='center'>
+    <img align="center" src=".github/newscout_text_light.png" height="50">
+</div>
 
->**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
 
-## Step 1: Start the Metro Server
 
-First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
+----
 
-To start Metro, run the following command from the _root_ of your React Native project:
 
-```bash
-# using npm
-npm start
 
-# OR using Yarn
-yarn start
+## Table of Contents
+* [Project Setup](#project-setup)
+* [Project Description](#project-description)
+* [Project Structure](#project-structure)
+* [Core APIs](#core-apis)
+* [Development](#development)
+
+
+## Project Setup
+
+### Please refer to the [React Native Documentation](https://reactnative.dev/docs/environment-setup)
+
+#### For Android 
+
+1. Install [Node v18](https://www.liquidweb.com/kb/install-nvm-linux/)
+2. Install [Java JDK 17](https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-22-04)
+3. Install [Android Studio](https://www.educative.io/answers/how-to-install-android-studio-in-ubuntu)
+4. Clone Project from GOGS
+    ```bash 
+    git clone gogs@git.fafadiatech.com:savio/Newscout_Mobile.git
+    cd Newscout_Mobile
+    ```
+5. Check Dependancies by running 
+    ```bash 
+    npx react-native doctor
+    ```
+    **NOTE:** Please rectify the issues shown by RN Doctor before running the project.
+6. Install NPM Packages
+    ```bash 
+    npm install
+    ```
+7. For Debugging, Use an android device or emulator
+   1. For Android Device
+        1. Follow this guide for 
+            [Running on Device](https://reactnative.dev/docs/running-on-device)
+   2. For Emulator 
+        1. Install [KVM](https://phoenixnap.com/kb/ubuntu-install-kvm)
+        2. [Create a Virtual Device with AVD Manager in Android Studio](https://developer.android.com/studio/run/managing-avds)
+
+8. Run Project with 
+```bash 
+    npx react-native start
 ```
 
-## Step 2: Start your Application
+#### For iOS
+
+TBD
+
+## Project Description
+
+### Main Dependancies
+
+1. [toggle-switch-react-native](https://www.npmjs.com/package/toggle-switch-react-native) : Custom Switch Component for Toggle Scenarios. 
+2. [react-native-vector-icons](https://www.npmjs.com/package/react-native-vector-icons) : Icon Library for the App
+3. [react-native-reanimated-carousel](https://www.npmjs.com/package/react-native-reanimated-carousel) : Requires [react-native-gesture-handler](https://github.com/kmagiera/react-native-gesture-handler) and [react-native-reanimated-v3](https://github.com/kmagiera/react-native-reanimated)
+4. [react-native-paper](https://callstack.github.io/react-native-paper/docs/guides/getting-started): Supporting Component Library for the App. 
+5. [react-native-linear-gradient](https://www.npmjs.com/package/react-native-linear-gradient): Allows to create linear gradient for Views.
+6. [axios](https://axios-http.com/docs/intro): Handles API Handling Functionality
+7. [@react-navigation/bottom-tabs](https://reactnavigation.org/docs/bottom-tab-navigator): Provides Bottom Tabs Navigation for the App
+8. [@react-navigation/drawer](https://reactnavigation.org/docs/drawer-navigator): Provides Drawer Navigation for the App
+9. [@react-navigation/native-stack](https://reactnavigation.org/docs/native-stack-navigator): Provides Platform Specific Stack Navigation for the App
+10. [@react-navigation/native](https://reactnavigation.org/docs/getting-started): Contains Driver Code for other Navigation Packages.
+11. [@gorhom/bottom-sheet](https://www.npmjs.com/package/@gorhom/bottom-sheet): Provides resizable bottom sheet modal for the App 
+12. [react](https://react.dev/): The library for web and native user interfaces.
+13. [react-native](https://reactnative.dev/): Cross Platform App Library for creating native apps.
+
+**NOTE:** Please refer the `package.json` file for the versions used for the packages.
+
+## Project Structure
+
+1. Project files are contained in `src` folder. 
+2. Project files are divided based on their utility
+    1. `api`: Contain URL Constants and API Entity Functions
+    2. `assets`: Contain Static Files like images and fonts
+    3. `components`: Contain Resuable Components for the Screens. The folder follows [Atomic Development Project Structure](https://medium.com/@prathiba2796/react-native-best-practices-for-organizing-code-with-atomic-folder-structure-131858653eb1).
+    4. `constants`: Contain Colors, Fonts and Responsive Scaling Constants 
+    5. `utils`: Contain Utility Functions
+    6. `context`: Contain App Context Files like Theme and Auth. This helps us aggregate the context data accessible from a single point. 
+    7. `navigation`: Contain Logic to navigate across the screens.
+    8. `screens`: Contains All Pages for the App. Each File represents a Page for the Application. Pages are segregated by their [features / function](https://www.antit.io/tech-blog/by-feature-approach-scaffolding-react-native)
+
+## Core APIs
+
+Please refer the [`data`](src/api/data.js) for API Functions.
+
+**BASE URL** : http://www.newscout.in
+
+### Trending News
 
-Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
+<details>
+ <summary><code>GET</code> <code><b>/trending</b></code></summary>
 
-### For Android
+##### Parameters
 
-```bash
-# using npm
-npm run android
+> | name      |  type     | data type               | description                                                           |
+> |-----------|-----------|-------------------------|-----------------------------------------------------------------------|
+> | None      |  required | object (JSON or YAML)   | N/A  |
+
+
+##### Responses
+
+* **`200`** Response (application/json)
+
+```json
+{
+  "header": {
+    "status": "1"
+  },
+  "body": {
+    "results": [
+      {
+        "id": 2515514,
+        "articles": [
+          {
+            "id": 2075649,
+            "title": "Democrat Gabe Amo Becomes Rhode Island's First Black Candidate Elected To Congress",
+            "source": "huffpost.com",
+            "category": "Uncategorised",
+            "hash_tags": [
+              "gabe amo",
+              "congress",
+              "rhode island"
+            ],
+            "source_url": "https://www.huffpost.com/entry/rhode-island-gabe-amo-elected_n_654ae415e4b0e63c9dc1646b",
+            "cover_image": "https://img.huffingtonpost.com/asset/654ae418220000cc11cef254.jpeg?ops=1200_630",
+            "blurb": "Democrat Gabe Amo defeated Republican Gerry Leonard to win Rhode Island’s 1st Congressional District seat Tuesday, becoming the state’s first Black candidate elected to Congress....",
+            "published_on": "2023-11-08T01:29:50Z",
+            "article_media": [],
+            "category_id": 123,
+            "domain": "newscout",
+            "active": true,
+            "source_id": 51,
+            "article_format": null,
+            "author": "",
+            "slug": "democrat-gabe-amo-becomes-rhode-islands-first-black-candidate-elected-to-congress-2075649",
+            "root_category": "Uncategorised",
+            "root_category_id": 123
+          },
+        
+          {
+            "id": 2075495,
+            "title": "Boat captain found guilty for 2019 California boat tragedy that killed 34",
+            "source": "foxnews.com",
+            "category": "Uncategorised",
+            "hash_tags": [],
+            "source_url": "https://www.foxnews.com/us/boat-captain-found-guilty-2019-california-boat-tragedy-killed-34",
+            "cover_image": "https://static.foxnews.com/foxnews.com/content/uploads/2023/11/captain-boat-2-1.jpg",
+            "blurb": "Fox News Flash top headlines are here. Check out whats clicking on Foxnews.com.",
+            "published_on": "2023-11-07T16:39:50Z",
+            "article_media": [],
+            "category_id": 123,
+            "domain": "newscout",
+            "active": true,
+            "source_id": 24,
+            "article_format": null,
+            "author": "",
+            "slug": "boat-captain-found-guilty-for-2019-california-boat-tragedy-that-killed-34-2075495",
+            "root_category": "Uncategorised",
+            "root_category_id": 123
+          },
+          {
+            "id": 2075283,
+            "title": "Captain found guilty of ‘seaman’s manslaughter’ in boat fire that killed 34 off California coast",
+            "source": "washingtontimes.com",
+            "category": "China",
+            "hash_tags": [
+              "b jerry boylan",
+              "b law crime",
+              "b los angeles"
+            ],
+            "source_url": "https://www.washingtontimes.com/news/2023/nov/6/jerry-boylan-captain-guilty-seamans-manslaughter-b/?utm_source=RSS_Feed&utm_medium=RSS",
+            "cover_image": "https://twt-thumbs.washtimes.com/media/image/2023/11/06/California_Boat_Fire_63868--6d532_c0-145-2930-1854_s1200x700.jpg?a8da2264f2a94c98eb4f636ca322450b5b36eb33",
+            "blurb": "LOS ANGELES — A scuba dive boat captain was convicted Monday of criminal negligence in the deaths of 34 people killed in a fire aboard the vessel in 2019, the deadliest maritime disaster in recent U.S. history.....",
+            "published_on": "2023-11-07T04:44:57.499413Z",
+            "article_media": [],
+            "category_id": 134,
+            "domain": "newscout",
+            "active": true,
+            "source_id": 16,
+            "article_format": null,
+            "author": "",
+            "slug": "captain-found-guilty-of-seamans-manslaughter-in-boat-fire-that-killed-34-off-california-coast-2075283",
+            "root_category": "Regional Updates",
+            "root_category_id": 132
+          }
+        ],
+        "domain": "newscout",
+        "created_at": "2023-11-08T09:31:51.661510Z",
+        "modified_at": "2023-11-08T09:31:51.697270Z",
+        "active": true,
+        "score": 0.0
+      }
+    ]
+  }
+}
 
-# OR using Yarn
-yarn android
 ```
 
-### For iOS
+</details>
+
+
+### Articles by Category
+
+<details>
+ <summary><code>GET</code> <code><b>/article/search/</b></code></summary>
+
+##### Parameters
 
-```bash
-# using npm
-npm run ios
+> | name      |  type     | data type               | description                                                           |
+> |-----------|-----------|-------------------------|-----------------------------------------------------------------------|
+> | category      |  optional | string   | N/A  |
+> | page | optional | number | N/A|
+
+##### Responses
+
+* **`200`** Response (application/json)
+
+```json
+{
+  "header": {
+    "status": "1"
+  },
+  "body": {
+    "results": [
+      {
+        "id": 2075412,
+        "title": "Jack Smith Opposes Trump’s Efforts To Get Federal Election Interference Case Tossed Out",
+        "source": "huffpost.com",
+        "category": "Tech",
+        "hash_tags": [
+          "jack smith",
+          "donald trump"
+        ],
+        "source_url": "https://www.huffpost.com/entry/jack-smith-trump-jan-6-case_n_654a14f0e4b0e63c9dc0cd3b",
+        "cover_image": "https://img.huffingtonpost.com/asset/654a236424000055005533f2.jpeg?cache=OJF7V5KFoP&ops=1200_630",
+        "blurb": "Breaking News Reporter, HuffPost\nSpecial counsel Jack Smith’s team on Monday forcefully rejected former President Donald Trump’s efforts to get his federal election interference case thrown out in a series of court filings Monday.",
+        "published_on": "2023-11-07T13:11:32Z",
+        "article_media": [],
+        "category_id": 127,
+        "domain": "newscout",
+        "active": true,
+        "source_id": 51,
+        "article_format": null,
+        "author": "",
+        "slug": "jack-smith-opposes-trumps-efforts-to-get-federal-election-interference-case-tossed-out-2075412",
+        "root_category": "Sector Updates",
+        "root_category_id": 124,
+        "article_score": 66.95
+      },
+      {
+        "id": 2075374,
+        "title": "Axis Bank inks an MoU with IRMA to promote financial inclusion and literacy",
+        "source": "livemint.com",
+        "category": "Banking",
+        "hash_tags": [
+          "axis bank",
+          "all you need to know",
+          "mintgenie"
+        ],
+        "source_url": "https://www.livemint.com/money/personal-finance/axis-bank-inks-an-mou-with-irma-to-promote-financial-inclusion-and-literacy-in-india-details-here-11699352032103.html",
+        "cover_image": "https://www.livemint.com/lm-img/img/2023/11/07/1600x900/2-0-470760800-axis-bank-0_1680765658586_1699352302423.JPG",
+        "blurb": "\nJust a few days ahead of “National Education Day\" observed on November 11 every year, Axis Bank and the Institute of Rural Management Anand (IRMA) have entered into a Memorandum of Understanding (MoU) on November 06, 2023. The idea behind entering the MoU is to establish the Axis Bank Chair for financial inclusion at IRMA. ....",
+        "published_on": "2023-11-07T11:28:03Z",
+        "article_media": [],
+        "category_id": 125,
+        "domain": "newscout",
+        "active": true,
+        "source_id": 49,
+        "article_format": null,
+        "author": "",
+        "slug": "axis-bank-inks-an-mou-with-irma-to-promote-financial-inclusion-and-literacy-2075374",
+        "root_category": "Sector Updates",
+        "root_category_id": 124,
+        "article_score": 78.6
+      },
+      {
+        "id": 2075369,
+        "title": "Amazon Sale 2023: Want new display? Get up to 69% off on monitors under  ₹10000",
+        "source": "livemint.com",
+        "category": "Tech",
+        "hash_tags": [],
+        "source_url": "https://www.livemint.com/technology/gadgets/amazon-sale-2023-want-new-display-get-up-to-69-off-on-monitors-under-rs-10000-11699334735112.html",
+        "cover_image": "https://www.livemint.com/lm-img/img/2023/11/07/1600x900/amazon_sale_1699335717698_1699343218352.jpg",
+        "blurb": "As the Amazon Sale of 2023 draws to a close, the opportunity to enhance your workspace with a brand-new monitor under ₹ 10,000 couldn't be more enticing. ...",
+        "published_on": "2023-11-07T10:50:06Z",
+        "article_media": [],
+        "category_id": 127,
+        "domain": "newscout",
+        "active": true,
+        "source_id": 49,
+        "article_format": null,
+        "author": "",
+        "slug": "amazon-sale-2023-want-new-display-get-up-to-69-off-on-monitors-under-10000-2075369",
+        "root_category": "Sector Updates",
+        "root_category_id": 124,
+        "article_score": 66.95
+      }
+    ],
+    "filters": {
+      "category": [
+        {
+          "key": "Automotive Industry",
+          "doc_count": 1052
+        },
+        {
+          "key": "Banking",
+          "doc_count": 13785
+        }
+      ],
+      "source": [
+        {
+          "key": "business-standard.com",
+          "doc_count": 11865
+        },
+        {
+          "key": "economictimes.indiatimes.com",
+          "doc_count": 3889
+        }
+       
+      ],
+      "hash_tags": [
+        {
+          "key": "amazon",
+          "doc_count": 2249
+        },
+        {
+          "key": "apple",
+          "doc_count": 3698
+        }
+
+      ]
+    },
+    "count": 167432,
+    "total_pages": 8372,
+    "current_page": 1,
+    "next": "http://www.newscout.in/api/v1/article/search/?category=Sector+Updates&domain=newscout&page=2",
+    "previous": null
+  }
+}
 
-# OR using Yarn
-yarn ios
 ```
 
-If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
+</details>
 
-This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
+### Articles by Search Query
 
-## Step 3: Modifying your App
+<details>
+ <summary><code>GET</code> <code><b>/article/search/</b></code></summary>
 
-Now that you have successfully run the app, let's modify it.
+##### Parameters
 
-1. Open `App.tsx` in your text editor of choice and edit some lines.
-2. For **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Developer Menu** (<kbd>Ctrl</kbd> + <kbd>M</kbd> (on Window and Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (on macOS)) to see your changes!
+> | name      |  type     | data type               | description                                                           |
+> |-----------|-----------|-------------------------|-----------------------------------------------------------------------|
+> | category      |  optional | string   | N/A  |
+> | page | optional | number | N/A |
+> | q | optional | string | N/A |
 
-   For **iOS**: Hit <kbd>Cmd ⌘</kbd> + <kbd>R</kbd> in your iOS Simulator to reload the app and see your changes!
+##### Responses
+
+* **`200`** Response (application/json)
+
+```json
+{
+  "header": {
+    "status": "1"
+  },
+  "body": {
+    "results": [
+      {
+        "id": 2075766,
+        "title": "India, US to review bilateral ties, key global issues at '2+2' dialogue",
+        "source": "newindianexpress.com",
+        "category": "India",
+        "hash_tags": [
+          "usa",
+          "indo us ties",
+          "india",
+          "2+2 dialogue"
+        ],
+        "source_url": "https://www.newindianexpress.com/nation/2023/nov/08/india-us-to-review-bilateral-ties-key-global-issues-at-22-dialogue-2631234.html",
+        "cover_image": "https://images.newindianexpress.com/uploads/user/imagelibrary/2023/11/8/w600X390/India_US_Two_Plus_Two.jpg",
+        "blurb": "NEW DELHI: India and <em>the</em> US will carry out a comprehensive review of their fast-expanding strategic ties at <em>the</em> next edition of <em>the</em> here on Friday.\nUS Secretary of State Antony Blinken and Defence Secretary Lloyd Austin are visiting India for <em>the</em> dialogue.",
+        "published_on": "2023-11-08T10:04:10.930895Z",
+        "article_media": [],
+        "category_id": 160,
+        "domain": "newscout",
+        "active": true,
+        "source_id": 54,
+        "article_format": null,
+        "author": "",
+        "slug": "india-us-to-review-bilateral-ties-key-global-issues-at-22-dialogue-2075766",
+        "root_category": "Regional Updates",
+        "root_category_id": 132,
+        "article_score": 70.28
+      }
+    ],
+    "filters": {
+      "category": [
+        {
+          "key": "Asia",
+          "doc_count": 98997
+        },
+        {
+          "key": "China",
+          "doc_count": 34794
+        }
+      ],
+      "source": [
+        {
+          "key": "business-standard.com",
+          "doc_count": 166957
+        },
+        {
+          "key": "financialexpress.com",
+          "doc_count": 71065
+        }
+      ],
+      "hash_tags": [
+        {
+          "key": "",
+          "doc_count": 4368
+        },
+        {
+          "key": "apple",
+          "doc_count": 4069
+        }
+      ]
+    },
+    "count": 1418743,
+    "total_pages": 70938,
+    "current_page": 1,
+    "next": "http://www.newscout.in/api/v1/article/search/?domain=newscout&page=2&q=the",
+    "previous": null
+  }
+}
+
+```
 
-## Congratulations! :tada:
+</details>
 
-You've successfully run and modified your React Native App. :partying_face:
+## Development
 
-### Now what?
+### Pre-requisites
 
-- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
-- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
+* [React Navigation](https://reactnavigation.org/)
+* [React Native Paper](https://reactnativepaper.com/)
 
-# Troubleshooting
+### Key Components / Screens:
 
-If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
+1. [`LandingPageNavigator.jsx`](src/navigation/LandingPageNavigator.jsx): Contains Initial Landing Page and Authentication Workflow Page.
+2. [`HomePageNavigator.jsx`](src/navigation/HomePageNavigator.jsx): Provides Navigation for the Post Login Workflow for User 
 
-# Learn More
+### Creating a Component/Screen from Scratch
 
-To learn more about React Native, take a look at the following resources:
+**Recommended:** When using VSCode for development, Please use these VSCode Extensions
+* [React Native Tools](https://marketplace.visualstudio.com/items?itemName=msjsdiag.vscode-react-native) for Debugging 
+* [ES7+ React/React Native Snippets](https://marketplace.visualstudio.com/items?itemName=dsznajder.es7-react-js-snippets) for Code Snippets Shortcuts
+* [Javascript Docstrings](https://marketplace.visualstudio.com/items?itemName=Massi.javascript-docstrings) for Code Commenting for JS 
 
-- [React Native Website](https://reactnative.dev) - learn more about React Native.
-- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
-- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
-- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
-- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
+**Example:** [News Detail Page](src/screens/News/NewsDetailPage.js)

+ 50 - 0
src/api/data.js

@@ -1,11 +1,61 @@
 import APIHandler from "./APIHandler";
 import { ARTICLE_CATEGORY_URL, ARTICLE_COMMENTS_URL, ARTICLE_DETAIL_URL, ARTICLE_RECOMMENDATIONS_URL, ARTICLE_SEARCH_URL, MENUS_URL, TRENDING_URL } from "./urls";
 
+
+/** 
+* Fetch Trending News via API
+* @return {Axios.get()} Get Axios Method for Trending New URL.
+*/
 export const getTrendingNews = () =>  APIHandler.get(TRENDING_URL)
+
+/** 
+* Fetch Menu Data via API
+* @return {Axios.get} Get Axios Method for Menu URL .
+*/
 export const getMenus = () => APIHandler.get(MENUS_URL)
+
+/** 
+* Fetch Articles By Specified Category with Pagination
+* @param {String} category - Category Name
+* @param {number} page - Page Number
+* @return {Axios.get} -  Get Axios Method for Articles by Category
+*/
 export const getArticlesByCategory = (category,page = 1) => APIHandler.get(ARTICLE_CATEGORY_URL(category,page))
+
+
+/** 
+* Fetch Articles By Specified Category with Pagination
+* @param {String} category - Category Name
+* @param {number} page - Page Number
+* @param {String} filters - Additional Filters
+* @return {Axios.get} -  Get Axios Method for Articles by Search Query
+*/
 export const getArticlesBySearch = (category,page = 1,filters="") => {console.log(ARTICLE_SEARCH_URL(category,page,filters));return APIHandler.get(ARTICLE_SEARCH_URL(category,page,filters))}
+
+/** 
+* Fetch Article By Slug
+* @param {String} slug - Slug Name
+* @return {Axios.get} -  Get Axios Method for Article by Slug
+*/
 export const getArticleBySlug = (slug) => APIHandler.get(ARTICLE_DETAIL_URL(slug))
+
+/** 
+* Fetch Comments by Article ID
+* @param {String} id - Slug Name
+* @return {Axios.get} -  Get Axios Method for Comments by Article ID
+*/
 export const getCommentByArticleID = (id) => APIHandler.get(ARTICLE_COMMENTS_URL(id))
+
+/** 
+* Fetch Recommendations By Article ID
+* @param {String} id - Article ID
+* @return {Axios.get} -  Get Axios Method for Recommendations By Article ID
+*/
 export const getRecommendationByArticleID = (id) => APIHandler.get(ARTICLE_RECOMMENDATIONS_URL(id))
+
+/** 
+* Fetch Category Data By Article ID
+* @param {String} id - Article ID
+* @return {Axios.get} -  Get Axios Method for Category Data By Article ID
+*/
 export const getCategories = () => APIHandler.get(MENUS_URL)

+ 17 - 1
src/api/urls.js

@@ -5,16 +5,32 @@ export const API_URL_v1 = BASE_URL + "/api/v1/"
 export const API_URL_v2 = BASE_URL + "/api/v2/"
 
 
-
 // * V1 API URLS
+
+/** @constant {String} */
 export const ARTICLE_URL = `article/search/?domain=${DEFAULT_DOMAIN}`
+
+/** @constant {String} */
 export const TRENDING_URL = `trending/?domain=${DEFAULT_DOMAIN}`
+
+/** @constant {String} */
 export const MENUS_URL =  `menus/?domain=${DEFAULT_DOMAIN}`
+
+/** @constant {String} */
 export const ARTICLE_CATEGORY_URL = (category_type,page = 1) =>  `article/search/?domain=${DEFAULT_DOMAIN}&category=${category_type}&page=${page}`
+
+/** @constant {String} */
 export const ARTICLE_SEARCH_URL = (search_text,page = 1,filters="") =>  `article/search/?domain=${DEFAULT_DOMAIN}&q=${search_text}&page=${page}${filters}`
+
+/** @constant {String} */
 export const ARTICLE_DETAIL_URL = (slug) => `articles/${slug}/?domain=${DEFAULT_DOMAIN}`
+
+/** @constant {String} */
 export const ARTICLE_COMMENTS_URL = (id) => `comment/?article_id=${id}`
+
+/** @constant {String} */
 export const ARTICLE_RECOMMENDATIONS_URL = (id) => `articles/${id}/recommendations`
 
 // * V1 Linking URLS
+/** @constant {String} */
 export const NEWSCOUT_NEWS_URL = (slug) => `${BASE_URL}/news/article/${slug}`