Giter VIP home page Giter VIP logo

memories's Introduction

HEADER

Visitor count

Hi there I'm Pritam - aka Kryptonite πŸš€

  • πŸŽ“ I'm currently in Fourth year pursuing my Bachelors in Computer Science & Engineering from UEMK
  • πŸ‘©β€πŸ’» Python | Java | React | HTML | CSS | JS | SQL | MongoDB | MaterialUI | Figma | TailwindCSS | GraphQL | REST
  • ⚑ Fun Fact 1: I am the author of dataStax Library
  • πŸ˜„ Fun Fact 2: I have great attention to detail
  • πŸ“„ Have a look at my Portfolio

line

πŸ’– My Favourite Languages πŸ’–

Top Languages

line

πŸ† My Trophies πŸ†

Github Trophies

line

πŸ‘‘ Most Popular Open-Source RepositoriesπŸ”ΊπŸ‘‘

🎁 Projects ⭐ Stars πŸ“š Forks πŸ›Ž Issues πŸ‘©β€πŸ’» Contributors πŸ‘¨β€πŸ’»
Nike Stars Forks Issues GitHub contributors
UEMCRP Stars Forks Issues GitHub contributors
Memories Stars Forks Issues GitHub contributors
Euphoria Stars Forks Issues GitHub contributors
Markdown Editor Stars Forks Issues GitHub contributors
Datastax Stars Forks Issues GitHub contributors
Swing Bank Stars Forks Issues GitHub contributors
Better Calculator Stars Forks Issues GitHub contributors

line

πŸ“Š My GitHub Stats πŸ“Š

Github Stats

Github Streak
Activity Graph

line

πŸ’– A small token of Appreciation πŸ’–

Thanks to all my followers

line

Holopin

line

Show some ❀️ by and 🍴 some of the repositories!

Find me on LinkedIn. Feel free to mail me here.

memories's People

Contributors

0rigin-c0de avatar a-s-t-e-y-a avatar abdulrehmanjaved-1 avatar adisuyash avatar amitgiri72 avatar atharvarekhawar avatar beneyalraj avatar cesardlinx avatar cyblogerz avatar deepsource-autofix[bot] avatar deepsourcebot avatar dependabot[bot] avatar devanshu-augusty avatar faisalhs51 avatar jayeshyadav99 avatar keerthivardhan1 avatar ltwoz avatar nikolai1312 avatar priyankaa2503 avatar rasvanjaya21 avatar theguyd avatar theritikchoure avatar ved142 avatar vinayakvispute avatar waleedkhano avatar warmachine028 avatar youssefkhaled08 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

memories's Issues

[REFACTOR] Drop support for Memories PWA

Description

  • The Progressive Web App (PWA) feature was initially added as a test and hobby feature without fully considering its relevance and suitability for the web application.
  • After careful evaluation, it has been determined that the PWA functionality is not well-suited for the specific requirements and nature of the web application.
  • The current implementation of the PWA feature has introduced several challenges and drawbacks that outweigh its benefits.
  • One of the notable problems is the inconsistency in fetching updates after new changes are pushed to the Git repository.
  • This inconsistency leads to discrepancies in the client-side rendering, causing confusion and potentially compromising the user experience.
  • Users needed to clear the existing website cookies from their browser to view new updates, else they were stuck with previous version
  • It has been observed that maintaining and troubleshooting the PWA functionality requires significant development and maintenance effort.
  • The resources and time spent on managing the PWA feature could be better utilized in addressing other critical features and improvements.

Important

  • Make sure that existing features don't break while removing support for it.
  • Make sure that the inconsistencies in client-side rendering after pushing new updates are fixed.

Screenshots

  • Files to be modified:
    Screenshot 2023-07-16 152809

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG 🐞] Post Updates Doesn't clear form data

Description

  • Post Updates keep form Data as Usual after updating.
  • The clear Callback method must be invoked
  • This callback method is passed with the update post dispatch event

Screenshots

No response

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[FEATURE πŸ’‘] Migrate to Vite

Description

  • As CRA was deprecated long ago, it is not recommend to use in a repo like this.
  • Planning to Migrate from CRA to vite
  • Heres a Blog Post for quick and easy migration.
  • Here's another one

Screenshots

download.png

Additional information

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[FEATURE πŸ’‘] Tags must be added feat: tags must be added

Description

Have a look at this previous deployment.

  • Previously tags could be added to posts in the Form by Chipinput.js
  • Tags were searchable too in the search Form.
  • After migrating to MUI v5, we had to drop support for mui-chip-input.
  • We used our own Component at Chipinput.js.
  • But after migrating to Vite from CRA at #72 , we had to disable support for ChipInput.jsx
  • Bring back this feature in the App, after using this feature carefully in the previous deployment.

Screenshots

  • Previously in Memories
    image

  • MUI Chip Input
    image

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

Enhancements after addition of new Feature.

Suggested minor fixes

  • Fix auth/forgotPassword to be not accessible while user is logged in.
  • Fix spelling of 'your' in send email.
  • Fix marginTop of forgotPassword
  • Remove unnecessary styles from ForgotPassword/styles.
  • Add condition newPassword can not be same as old password.

Screenshot_2022-07-31-01-21-52-94_40deb401b9ffe8e1df2f1cc5ba480b12

[BUG 🐞] Fix code scanning alert - Change user-controlled sources for GoogleSignIn

Description

  • Location: server/controllers/user
  • If a database query (such as a SQL or NoSQL query) is built from user-provided data without sufficient sanitization, a malicious user may be able to run malicious database queries.
  • Perform the following change

Tracking issue for:

Screenshots

Before:

export const googleSignin = async (req, res) => {
	const { name, email, image, googleId } = req.body

	try {
		const id = new mongoose.Types.ObjectId(googleId)
		const user = await User.findByIdAndUpdate(id, { name, email, image }, { upsert: true })
                ...

After:

export const googleSignin = async (req, res) => {
	const { name, email, image, googleId } = req.body


	try {
		if (![name, email, image].every((field) => typeof field === "string")) {
			return res.status(400).json({ status: "error" });
		}
		const user = await User.findByIdAndUpdate(googleId, { name, email, image }, { upsert: true })

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[FEATURE] Theme toggle

Description

  • Any modern web app these days support a light and dark themes, this website is no different
  • We need a toggle switch to toggle between light and dark themes using CSS variables.
  • Initially the value should be system default theme.
  • Then the changed theme value must be stored in local storage.

Screenshots

download

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[DOCS πŸ“„] Demo Section

Description

Issued : the demo section of latest version of this repository doesn't show the gif.

Screenshots

No response

Additional information

No response

Infinite Loading

Infinite Loading in Google Login.

infinite_loading

  • This bug was introduced with yesterday's feature update, commit number 512ae38.
  • Need's to be fixed ASAP

[FEATURE] Add name in PublicProfile

Description

  • The name of a user would be a good addition in the public profile
  • The attributes are already available from server.
  • It needs to be presented correctly like the other attributes.

Important:

  • The name attribute must only be present in the PublicProfile component. Hence the UserDetails Component should be left untouched.

Screenshots

Screenshot 2023-07-16 153741

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG 🐞] Duplicate module imports found

Description

Anti-pattern
Found duplicate imports on 4 files

Screenshots

Screenshot 2023-10-03 at 3 01 25 PM Screenshot 2023-10-03 at 3 01 34 PM Screenshot 2023-10-03 at 3 01 43 PM

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[FEATURE πŸ’‘] Dark mode for public Profile

Description

  • If possible make use of the Classes already present in UserProfile component

Screenshots

Click here to reach public profile:

  • Screenshot_2023-10-10-19-16-50-686_com**_ android chrome-edit

Public Profile

  • Screenshot_2023-10-10-19-17-08-324_com android chrome

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[FEATURE πŸ’‘] Tag Sugessions

Description

  • Fetch all tags from the database using a method.
  • Then display tag suggestions to select from to the user using AutoComplete.
  • This feature can be added in Forms so that users don't create duplicate tags and use existing ones.
  • If you are unable to connect to database because u don't have mongoDB string please do it using some mock tags stored in an array in frontEnd itself.
  • See this page for the Autocomplete component

Screenshots

image

download

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[FEATURE πŸ’‘] Dark Mode for User Profile

Description

  • Add dark mode to user profile
  • Match the appearance of the existing UI

Screenshots

Screenshot_2023-10-06-20-57-46-818_com android chrome

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[FEATURE] <Proper Doumentation for local setup>

Description

A proper documentation for local setup will help in contribution. Details of env variables is not given on the rules.md.
The following variables were confusing during first time setup of the local environment.

Screenshots

image
image

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

Mobile Responsiveness Issue

Describe the bug
When I see this beautiful website on a mobile device at 360px to read the whole post created by users I saw an insane thing the Post title is very big and looked very ugly and bad user experience

To Reproduce
Steps to reproduce the behavior:

  1. Go to Mobile Screen
  2. Click on any post
  3. Scroll down to the post title
  4. See the error

Expected behavior
The title's font size should be small on mobile screens it looks awesome

Screenshots
Screenshot 2023-07-26 134821

Desktop (please complete the following information):

  • OS: Windows
  • Browser: Brave
  • Version 11

Smartphone (please complete the following information):

  • Device: Redmi 9 Prime
  • OS: Android
  • Browser Brave
  • Version 12

Additional context
Add any other context about the problem here.

Website Not loading

Website is loading indefinitely and not been able to fetch posts

  • This is happening due to very long fetching time from mongoDB.
  • Each await call to the database is taking more than 40-45 seconds to fetch.
  • Just a few days ago with the same number of collections in the db, each fetch calls took almost 10-20 seconds.
  • This is resulting in NetworkError in the console of FrontEnd.
  • Even with less number of collections it is taking around 30 seconds to fetch the posts.

Screenshot_2022-07-13-09-28-46-14_40deb401b9ffe8e1df2f1cc5ba480b12

  • I've put a lot of effort trying to build and enhance this webApp everyday.
  • I've recently tried to copy the data from one collection to other in the same database. This fix initially worked but later it became slow as the previous one.
  • I also spent almost 2 days fixing this issue but nothing seems working.
  • Any help would be highly benificial for this project.

[DOCS πŸ“„] Compact hacktoberfest banner for README.md

Description

  • Right now the current hacktoberfest logo banner is very large and consuming a lot of space.
  • Suggest a new compact logo that is similar to this original one in this README.md.

Screenshots

No response

Additional information

No response

[BUG 🐞] Change sanitize method for Posts

Description

  • Location: actions/post
  • This method only replaces the first occurrence of the characters
  • Change it so that for all the characters are replaced for all occurences.

Tracking issue for:

Screenshots

Before:

const sanitize = ({ tags, search }) => {
	return {
		tags: tags.replace('#', '%23').replace(' ', '%20'),
		search: search?.replace('#', '%23').replace(' ', '%20'),
	}
}

After:

const sanitize = ({ tags, search }) => {
	return {
		tags: tags.replace(/#/g, '%23').replace(/ /g, '%20'),
		search: search?.replace(/#/g, '%23').replace(/ /g, '%20'),
	}
}

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

Create Issue template

Create Issue template for Issues.
Get help from my UEMCRP project.
Don't blindly copy paste, make necessary changes.

[BUG FIX]: Missing Rate Limiting

Description

  • Install 'express-rate-limit' module
  • Add a rate limiter in ./server/index.js
  • Rate Limiter is used to prevent DOS attacks.

Tracking issue for:

Screenshots

Example:
image

Additional information

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[DOCS πŸ“„] Fix Doc hrefs

Description

  • The hacktoberfest logo must take us to hacktoberfest 2023's official page
  • The memories logo should take us to memories deployed site.

Screenshots

Screenshot_2023-10-02-20-43-45-884_com android chrome

Additional information

No response

Pull request template

This repo requires a pull request template for contributors fast. You can refer to the pr template in my UEMCRP project.

Crashes when editing post

Describe the bug
Memories crashes when changing page while editing post

To Reproduce
Steps to reproduce the behavior:

  1. Log in
  2. Go to memories/posts
  3. Create a post
  4. Edit the post
  5. Change page using pagination

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.
image

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Add Contributors Pannel.

As this project is getting contributions,

  • I need a section at the bottom to show contributors icons
  • Also add the contributors section reference in Table of Contents
  • You might take reference from my UEMCRP project.

[FEATURE πŸ’‘] Enhancements for Light mode

Description

  • During development of the Dark mode, various texts were converted to white color for visibility in both modes properly.
  • But some colors fit only the Light mode perfectly. Hence some changes are to be brought back.
  • All of these changes are to be made for Light theme without hampering the existing colors or UI of the Dark theme
  • Your changes should be compatible with all devices, check responsive properly especially for mobile devices.
  • Change the Post Upload Form Title color to Black.
  • The post title font should be a bit increased.
  • The Comment Text area has a white background, this must be removed.
  • Bring back the changes in Light theme which existed in previous Deployment without hampering the dark mode UI.
  • Take reference from the old deployment to apply these changes.

Screenshots

Previous Deployment for Light mode

  • Screenshot_2023-10-06-00-25-38-236_com android chrome

Current Deployment for Light mode

  • Screenshot_2023-10-06-00-28-04-523_com android chrome

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG 🐞] Warnings in console

Description

  • Upon updating the deps of this project to migrate from react 17 to latest react 18 along with Vite
  • App has been generating this warning message given below.
  • Please take necessary actions to remove this warning.

Screenshots

image

Additional information

  • This warning is visible only when we run the app locally using npm run dev.
  • Only push updates to deps-update not main branch.
  • Preview the latest deploy here.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG-FIX] Fix code scanning alert - Hard-coded credentials

Description

Tracking issue for:

Screenshots

image

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[FEATURE πŸ’‘] Let users add custom tags

Description

  • Right now users can only select from the existing available tags
  • Let users add their own tags while creating posts if the tag is not present in the list
  • Change the No options to No tags found

Screenshots

Screenshot_2023-10-15-14-47-13-969_com android chrome

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG 🐞] Page Crashes!

Description

  • Page Crashes on going to User Details
  • Also while comming back from PostDetails
  • Identify the Bug and Resolve it ASAP
  • Could be due to migration from react.v17 to react.v18

Screenshots

No response

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG 🐞] Fix code scanning alert - Change user-controlled sources for getUser

Description

  • Location: server/controllers/user
  • If a database query (such as a SQL or NoSQL query) is built from user-provided data without sufficient sanitization, a malicious user may be able to run malicious database queries.
  • Perform the following change

Tracking issue for:
https://github.com/warmachine028/memories/security/code-scanning/40

Screenshots

Before:

export const getUser = async (id) => {
	try {
		const userId = id
		const user = await User.findById(userId)
                ...

After:

  • Please refer to #70 for hints

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG 🐞] Change dependencies

Description

  • Change nodemon from server dependency to dev dependency
  • Use commands:
$> cd server
$> npm uninstall nodemon
$> npm install --save-dev nodemon
  • Do not attempt to manually change the package.json file

Screenshots

  • Before:
	"dependencies": {
		"bcryptjs": "^2.4.3",
		"body-parser": "^1.19.1",
		"cors": "^2.8.5",
		"dotenv": "^16.0.0",
		"express": "^4.17.2",
		"express-rate-limit": "^6.7.0",
		"jsonwebtoken": "^9.0.0",
		"lodash": "^4.17.21",
		"mongoose": "^6.12.0",
		"nodemailer": "^6.7.7",
		"nodemon": "^3.0.1"
	}
  • After:
	"dependencies": {
		"bcryptjs": "^2.4.3",
		"body-parser": "^1.19.1",
		"cors": "^2.8.5",
		"dotenv": "^16.0.0",
		"express": "^4.17.2",
		"express-rate-limit": "^6.7.0",
		"jsonwebtoken": "^9.0.0",
		"lodash": "^4.17.21",
		"mongoose": "^6.12.0",
		"nodemailer": "^6.7.7",
	},
	"devDependencies": {
		"nodemon": "^3.0.1"
	}

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[FEATURE] Custom Scrollbar Styling

Description

My suggestion is to implement custom scrollbar styling to complement the overall design and aesthetics. As we know, a visually appealing interface contributes significantly to user engagement and satisfaction.
As a user of Memories, I believe that these custom scrollbar styles would elevate the overall user experience and align better with the website's design vision.

Screenshots

No response

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG 🐞] Implement Loading Component to Enhance Page Refresh Experience β³πŸ”

Description

Issue Description

When refreshing the page, a loading animation appears for the posts, which is expected behavior. However, there is an issue with the pagination. Initially, the pagination shows only "1" as the page number, and then it suddenly updates to show the actual page numbers. To address this issue and provide a more seamless user experience, it is necessary to implement a loading component that can handle these conditions:

  • Display a loading animation for posts while the page is being refreshed.
  • Show an accurate page number on the pagination from the beginning.
  • Ensure that the loading animation transitions smoothly to reveal the actual content when it's ready, without abrupt updates or changes.

Screenshots

screen-capture.1.webm

Additional information

No response

[FEATURE] Animation in Theme toggle Button

Description

  • The theme toggle button in the application is currently generic and needs to be customized.
  • It is requested to add a subtle animation that transitions from day to night when toggling the theme.
  • The animation should provide a visually pleasing effect that enhances the user experience.
  • The animation should be smooth and seamless, ensuring a gradual change in the appearance of the toggle button.
  • The design and duration of the animation can be discussed and finalized in collaboration

Screenshots

  • Something with a similar animation is expected
    Day-Night-Toggle-with-Background-Animation

Additional information

  • The animation can be implemented using CSS transitions, animations.

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG 🐞] User attributes are not loading

Description

  • Only CREATED tab is loading
  • CREATED, LIKED, PRIVATE, COMMENTS must start fetching once page loads

Screenshots

Screenshcom android chrome

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

[BUG 🐞] Outlines are not visible in dark mode

Description

  • The form outlines are not visible in dark mode for SignIn and SignUp forms
  • Do not change anything for Default mode, only change it for Dark (Light)
  • You can take reference from the Form.jsx component styles.

Screenshots

Screenshot_2023-10-02-20-50-33-091_com android chrome

  • Supposed to look similar to this
    Screenshot_2023-10-02-21-03-29-175_com android chrome

Additional information

  • Always use styled components instead of plain CSS and MUI components.

Make sure to read the CONTRIBUTING and SETUP docs before proceeding

Happy contributing. πŸ’

Star my other Repositories here

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.