Skip to content

Latest commit

Β 

History

History
239 lines (191 loc) Β· 16.3 KB

README.md

File metadata and controls

239 lines (191 loc) Β· 16.3 KB

playground

https://playground.aniqa.dev

πŸ•ΉοΈ A place to showcase a collection of independent, interactive widgets that each demonstrate a different functionality using both frontend and backend technologies.

Tech

  • Frontend: HTML5, Tailwind, Sass, JavaScript
  • Backend: Node, Express, MongoDB, Mongoose

Hosts

  • Frontend: Vercel
  • Backend: Heroku
  • Database: MongoDB Atlas

Build Tools

  • Bundling & Optimization: Webpack
  • Tailwind Processing: PostCSS
  • Linter: ESLint
  • Formatter: Prettier

Project Files

playground/
β”œβ”€β”€ client/                 # Client-side code
β”‚   β”œβ”€β”€ public/             # Public assets
β”‚   β”œβ”€β”€ src/                # Source code for the client
β”‚   β”‚   β”œβ”€β”€ main/           # Main client-side scripts and styles (relating to theme mode, styling, like system, user handling, etc)
β”‚   β”‚   β”œβ”€β”€ widgets/        # Client-side logic for individual widgets
β”‚   β”‚   β”‚   β”œβ”€β”€ 01/         # Widget 01 (About)
β”‚   β”‚   β”‚   β”œβ”€β”€ 02/         # Widget 02 (Calculator)
β”‚   β”‚   β”‚   β”œβ”€β”€ 03/         # Widget 03 (Digital Footprint)
β”‚   β”‚   β”‚   β”œβ”€β”€ 04/         # Widget 04 (Task Manager)
β”‚   β”‚   β”‚   β”œβ”€β”€ 05/         # Widget 05 (Financial Market Monitor)
β”‚   β”‚   β”‚   β”œβ”€β”€ 06/         # Widget 06 (Historical Lottery Search)
β”‚   β”‚   β”‚   β”œβ”€β”€ 07/         # Widget 07 (GitHub Repository Visualizer)
β”‚   β”‚   β”‚   β”œβ”€β”€ 08/         # Widget 08 (Community Bookmarks)
β”‚   β”‚   β”‚   β”‚    β”‚          # Example structure of individual widget folders:
β”‚   β”‚   β”‚   β”‚    β”œβ”€β”€ core/  
β”‚   β”‚   β”‚   β”‚    β”œβ”€β”€ content.js
β”‚   β”‚   β”‚   β”‚    β”œβ”€β”€ script.js
β”‚   β”‚   β”‚   β”‚    β”œβ”€β”€ style.scss
β”‚   β”‚   β”‚   
β”‚   β”‚   β”œβ”€β”€ _border.html    # Template for animated borders (only used on Widget 01)
β”‚   β”‚   β”œβ”€β”€ _card.html      # Template for the widget container
β”‚   β”‚
β”‚   β”œβ”€β”€ .env                # Environment variables for the client-side
β”‚   β”œβ”€β”€ .env.development    # Environment-specific variables for development mode in the client-side
β”‚   β”œβ”€β”€ .eslintrc.js        # ESLint configuration for linting client-side JavaScript
β”‚   β”œβ”€β”€ .prettierrc         # Prettier configuration for formatting client-side code
β”‚   β”œβ”€β”€ postcss.config.js   # PostCSS configuration for CSS processing
β”‚   β”œβ”€β”€ tailwind.config.js  # Tailwind CSS configuration
β”‚   β”œβ”€β”€ webpack.config.js   # Webpack configuration 
β”‚   β”œβ”€β”€ package.json        # Metadata and scripts for the client-side
β”‚   β”œβ”€β”€ package-lock.json   # Exact dependency versions for the client-side
β”‚
β”œβ”€β”€ docs/                   # Documentation files for the project
β”‚
β”œβ”€β”€ server/                 # Server-side code
β”‚   β”œβ”€β”€ main/               # Main server-side logic (handling users and widget likes)
β”‚   β”œβ”€β”€ widgets/            # Server-side logic for individual widgets
β”‚   β”‚   β”œβ”€β”€ 03/             # Widget 03 (Digital Footprint)
β”‚   β”‚   β”œβ”€β”€ 04/             # Widget 04 (Task Manager)
β”‚   β”‚   β”œβ”€β”€ 05/             # Widget 05 (Financial Market Monitor)
β”‚   β”‚   β”œβ”€β”€ 06/             # Widget 06 (Historical Lottery Search)
β”‚   β”‚   β”œβ”€β”€ 07/             # Widget 07 (GitHub Repository Visualizer)
β”‚   β”‚   β”œβ”€β”€ 08/             # Widget 08 (Community Bookmarks)
β”‚   β”œβ”€β”€ _modelTemplate.js   # Template for server-side data models 
β”‚
β”œβ”€β”€ .env                    # Environment variables for the server
β”œβ”€β”€ .eslintrc.js            # ESLint configuration for the server-side
β”œβ”€β”€ .gitignore              # Git ignore file to exclude certain files from version control
β”œβ”€β”€ .prettierignore         # Prettier ignore file to exclude certain files from formatting
β”œβ”€β”€ .prettierrc             # Prettier configuration for the server-side
β”œβ”€β”€ package.json            # Metadata and scripts for the server-side
β”œβ”€β”€ package-lock.json       # Exact dependency versions for the server-side
β”œβ”€β”€ Procfile                # Process file for Heroku deployment
β”œβ”€β”€ server.js               # Entry point for the server-side application
β”‚
β”œβ”€β”€ LICENSE                 # License for the project
β”œβ”€β”€ README.md               # Project README (contains notes/screenshots about the widgets, structure, and more)

Webpack configuration for client-side code (client/webpack.config.js):

  • processes SCSS and PostCSS
  • bundles modular JavaScript
  • minifies CSS and JavaScript
  • configures HTML (meta tags, icons)
  • loads environment variables from .env
  • manages manifest.json for PWA support
  • optimizes images and saves them in assets/images with hashed filenames
  • splits JavaScript into chunks for better performance
  • outputs hashed filenames for JS and CSS to enable caching

Individual Widgets

Widget 01: About (README)

HTML Badge SCSS Badge

A card showcasing the purpose of the webpage with animated SVG logos of the technologies used, a GitHub activity grid of the creator, and links to source code and social media.

Widget 02: Calculator (README)

HTML Badge SCSS Badge JavaScript Badge Function Plot Badge Expr-Eval Badge HTML2Canvas Badge

A dual-mode calculator that can handle evaluating different arithmetic expressions and provides the ability to graph select functions, accessed through a minimalistic user interface. The calculator allows users to keep track of their previously inputted expressions and allows them to save a .png file of the calculator's display and history.

Widget 03: Digital Footprint (README)

HTML Badge SCSS Badge JavaScript Badge Node Badge Express Badge MapBox Badge IP API Badge

A mini dashboard that presents a user's digital footprint, including geographic location (obtained using their IP), browser details, operating system, and ISP information, all underscored by a dynamic map visualization for a quick and elegant overview of their online presence.

Widget 04: Task Tracker (README)

HTML Badge SCSS Badge JavaScript Badge Node Badge Express Badge Flatpickr Badge MongoDB Badge

A user-friendly to-do list widget that lets users manage tasks with priority tags, due dates, and quick actions like edit, delay, archive, or delete.

Widget 05: Financial Markets Monitor (README)

HTML Badge SCSS Badge JavaScript Badge Node Badge Express Badge MongoDB Badge OpenExchange Badge TwelveData Badge AlphaVantage Badge Chart.js Badge Google Favicon API Badge

A financial markets widget that delivers real-time currency exchange rates against USD and stock market data through interactive 7-day price history graphs, color-coded trend indicators, and detailed metrics for market monitoring.

Widget 06: Historical Lottery Search (README)

HTML Badge SCSS Badge JavaScript Badge Node Badge Express Badge MongoDB Badge AvoraTech Powerball Badge AvoraTech Megamillions Badge

A lottery analysis tool that helps players analyze historical Powerball and Mega Millions drawings, featuring quick number generation, detailed match statistics, and visual indicators to easily spot winning combinations - all searchable across 20+ years of drawing history.

Widget 07: GitHub Repository Search (README)

HTML Badge SCSS Badge HTML-to-Image Badge JavaScript Badge Node Badge Express Badge Octokit Badge

A GitHub repository visualization tool that generates cards displaying repository statistics and language breakdowns. Features include random repository discovery, search functionality, and PNG export capabilities.

Widget 08: Community Bookmarks (README)

HTML Badge SCSS Badge JavaScript Badge Node Badge Express Badge MongoDB Badge Cheerio Badge Google Safe Browsing Badge Natural Badge Leo-Profanity Badge Google Favicon Badge

A community-driven bookmark platform that processes submitted URLs to extract metadata, validate content safety, and generate topic tags. Features include community voting, automated metadata extraction, and content filtering to maintain a curated collection of high-quality web resources.

Available Scripts

Server-Side Development (Root / Directory)

  • npm run start:dev: starts the backend server and sets NODE_ENV variable to development (sets a different CORS origin so that requests can be made from the frontend development localhost)
  • npm run start: starts the backend server, used for production; sets NODE_ENV variable to production (sets a different CORS origin so that requests can be made from the hosted frontend)
  • npm run lint:server: check for code errors based on the .eslintrc.js config file
  • npm run lint:server:fix: automatically fix minor syntax errors identified by ESLint
  • npm run format:server: format the server-side code based on the .prettierrc config file

Client-Side Development (/client Directory):

  • npm run start: starts the development server with NODE_ENV variable set to development
  • npm run build: builds frontend for production with NODE_ENV variable set to production
  • npm run lint: check for code errors based on the .eslintrc.js config file
  • npm run lint:fix: automatically fix minor syntax errors identified by ESLint
  • npm run format: format client-side code based on the .prettierrc config file

License & Contributions

πŸ“‘ This project is licensed under the GPL-3.0.

πŸ‘‹πŸΌ Contributions for new widgets are always welcome.