stellar / soroban-example-dapp

End-to-End Example Soroban Dapp
Apache License 2.0
1.1k stars 892 forks source link

ODHack: Create a Dashboard for User Analytics #161

Open Julian-dev28 opened 4 months ago

Julian-dev28 commented 4 months ago

Please add PRs to the update-P21 branch

Description: Develop a dashboard to display user analytics, including metrics such as active users, transactions, and other key performance indicators.

Tasks:

  1. Design Dashboard UI:
    • Create wireframes or mockups for the dashboard.
    • Ensure the design is intuitive and user-friendly.
  2. Fetch Analytics Data:
    • Implement backend endpoints to fetch analytics data.
    • Ensure data is accurate and up-to-date.
  3. Display Data in Charts and Graphs:
    • Use a charting library to display data visually.
    • Include charts for metrics like active users, transactions, and more.
  4. Ensure Real-Time Updates:
    • Implement real-time updates for the dashboard using WebSockets or a similar technology.
    • Ensure data refreshes seamlessly without needing a page reload.
  5. Test Dashboard Functionality:
    • Conduct thorough testing to ensure all dashboard features work correctly.
    • Verify the accuracy of displayed data and real-time updates.

Expected Outcome:

Why This Is Important: Providing user analytics helps understand user behavior and improve the application based on insights. It also aids in monitoring the health and performance of the application.

kamalbuilds commented 4 months ago

Hello Julian, I am looking to pick this up for the LamdaHackWeek.

HumbertoTM10 commented 4 months ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I have 4 years working in development environments, have encountered several challenges, requests and teams focusing in reusable and efficient code, so that gives me a better understanding of the code and how to solve problems efficiently.

How I plan on tackling this issue

First of all will look at the data sources and data available in order to understand what is required to be shown, according to that desing appealing dahsboards that show in an easy to understand format that data. After that work towards the backend structure in order to fetch data and be constantly updating it.

At the end, do the testing to make sure the implementations are working properly.

ooochoche commented 4 months ago

@Julian-dev28 If this isn't assigned to someone, I can jump on it. I am into UI design

onlydustapp[bot] commented 4 months ago

Hey @ooochoche! Thanks for showing interest. We've created an application for you to contribute to Soroban Example Dapp. Go check it out on OnlyDust!

chibokaxavier commented 4 months ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

Hi, I'm Chiboka Emmanuel, a frontend-focused software engineer with over three years of experience. I'm proficient in CSS, Tailwind CSS, Next.js, React.js, TypeScript, and more. I've transformed complex designs into responsive, interactive web pages and integrated numerous third-party APIs for real-time data fetching. I excel in collaborative environments, ensuring seamless UI/UX and optimized codebases for high-performing web applications.

How I plan on tackling this issue

Designing the Dashboard UI: First, I'll start by creating wireframes or mockups using tools like Figma. My goal is to design a dashboard interface that is intuitive and user-friendly. I will make sure the design is consistent, accessible, and works well on different devices.

Fetching Analytics Data: Next, I'll set up backend endpoints with Node.js and Express.js to fetch analytics data from a database like MongoDB . I'll ensure the data is accurate and up-to-date and that the endpoints are secure and efficient.

Displaying Data in Charts and Graphs: Using a charting library like Chart.js or Recharts, I'll visually display the analytics data. I'll create various charts for key metrics, such as active users and transactions, to make the data easy to understand.

Ensuring Real-Time Updates: I'll implement real-time updates with WebSockets or a similar technology. By setting up WebSocket endpoints on the backend and integrating them with the frontend, I'll ensure that the dashboard data refreshes seamlessly without requiring a page reload.

Testing Dashboard Functionality: Lastly, I'll thoroughly test the dashboard to ensure all features work correctly. This includes manual testing to verify data accuracy and real-time updates.

0xdevcollins commented 4 months ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

With 3 years of solid experience in JavaScript, TypeScript, and React, I have developed a strong proficiency in creating intuitive and visually appealing user interfaces. My work on various projects, including browser extensions, has provided me with valuable insights into enhancing user experience and ensuring responsiveness across different devices. Here is my github profile https://github.com/devcollinss

How I plan on tackling this issue

Design UI:

I will start by sketching wireframes and mockups in Figma to outline the dashboard layout and user flow.
Then, I'll translate these designs into React components within your Next.js application, ensuring a seamless integration with the existing UI.

Fetch Data:

I’ll create API routes in Next.js (e.g., pages/api/analytics.js) to handle backend requests for fetching analytics data.
Next, I’ll  pull data from these endpoints and manage any data fetching errors gracefully.

Display Data:

I’ll integrate a charting library like Chart.js  to visualize the data effectively.
Then, I’ll implement these charts within Next.js pages, making sure they adapt responsively to different screen sizes using tailwindcss.

Real-Time Updates:

I will set up WebSocket connections using a library such as socket.io to enable real-time data updates.
Next, I’ll ensure that React components in Next.js properly handle these updates, reflecting changes in the UI without needing a full page reload.

Testing:

I’ll write unit tests for the React components using Jest and React Testing Library to ensure they work as expected.
Finally, I’ll conduct end-to-end tests with Cypress to verify the complete functionality of the dashboard, including real-time updates.
Benjtalkshow commented 4 months ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

Hi @Julian-dev28,

I will be glad to implement the dashboard for user analytics, transactions, and more for the Soroban Example Dapp. My track record includes the successful implementation of the block details page in the Op Scan Project during the last ODHack, which was recognized for its quality. I have worked on various dashboard analytics-related projects such as TechCare Hospital Management and Analytics, and the Solvety Survey Platform and Data Analytics. With my 3 years of expertise in full-stack development using tools like Next.js, TypeScript, Shadcn, and React, I am confident in my ability to create a visually appealing dashboard displaying user analytics, real-time updates of key metrics, and accurate and up-to-date analytics data.

How I plan on tackling this issue

Proposed Solution for User Analytics Dashboard

Design Dashboard UI:

Fetch Analytics Data:

Display Data in Charts and Graphs:

Ensure Real-Time Updates:

Expected Outcome:

I hope to get this issue assigned to me and i will deliver a top-notch solution. Thanks

ScottyDavies commented 3 months ago

I am applying to this issue via OnlyDust platform. Design Dashboard UI: Create simple, clean wireframes for the dashboard layout. Focus on intuitive, user-friendly design. Fetch Analytics Data: Coordinate with the backend team to set up the necessary API endpoints. Ensure the data covers key metrics like active users, transactions, etc. Display Data in Charts and Graphs: Use a lightweight charting library like Recharts or ApexCharts. Choose appropriate chart types to effectively visualize the data. Implement Real-Time Updates: Set up a WebSocket connection to enable seamless data updates. Ensure smooth, instant updates without full page reloads. Test and Refine: Thoroughly test the dashboard functionality and data accuracy. Gather user feedback and iterate on the design and features.

PoulavBhowmick03 commented 3 months ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I am a seasoned fullstack blockchain developer, with over 2 years of experience I have contributed to many open source repositories and also to OnlyDust

How I plan on tackling this issue

  1. Design Dashboard UI:

Create wireframes or mockups for the dashboard. Ensure the design is intuitive and user-friendly. Fetch Analytics Data:

Implement backend endpoints to fetch analytics data. Ensure data is accurate and up-to-date.

  1. Display Data in Charts and Graphs:

Use a charting library to display data visually. Include charts for metrics like active users, transactions, and more. Ensure Real-Time Updates:

Implement real-time updates for the dashboard using WebSockets or similar technology. Ensure data refreshes seamlessly without needing a page reload.

  1. Test Dashboard Functionality:

Conduct thorough testing to ensure all dashboard features work correctly. Verify the accuracy of displayed data and real-time updates.

Utkarsh-626744 commented 3 months ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

I am a software engineer at Zscaler with a year of experience in providing cloud security solutions. My role involves developing secure, scalable cloud-based applications, which has honed my skills in cloud infrastructure, security protocols, and system architecture. Additionally, I have developed a blockchain project that connects multiple wallets, showcasing my proficiency in blockchain technology, smart contract development, and Dapp deployment. This project is deployed on Netlify and available on my GitHub profile. My expertise in cloud security ensures that blockchain projects are secure from various threats while being scalable and efficient. I excel in integrating blockchain networks, deploying applications, and maintaining them using CI/CD pipelines. My collaborative approach, problem-solving skills, and customer-centric mindset further enhance my ability to deliver innovative and secure solutions in both cloud security and blockchain domains.

How I plan on tackling this issue

To develop a User Analytics Dashboard, start by designing an intuitive and user-friendly interface using wireframing tools like Figma or Sketch. Implement a robust backend with Node.js and Express.js to create API endpoints that fetch accurate and up-to-date analytics data from a reliable source. Use React.js and a charting library such as Chart.js to display the data visually, incorporating charts for metrics like active users and transactions. Enable real-time updates with WebSockets to ensure dynamic data refreshes without page reloads. Thoroughly test the dashboard using Jest and React Testing Library to verify the accuracy of data and functionality, ensuring a seamless user experience that supports data-driven decision-making.

coxmars commented 3 months ago

Hi @Julian-dev28 I will work asap on this issue, if I have questions I will let you know thanks 🫡

coxmars commented 3 months ago

Hi @Julian-dev28 I will work asap on this issue, if I have questions I will let you know thanks 🫡

Unfortunately, due to other commitments, I am unable to complete this issue. I recommend reassigning the issue to someone else who can give it the attention it deserves, I appreciate the opportunity and hope to contribute to this project in the future.

Benjtalkshow commented 3 months ago

@Julian-dev28 The person assigned to this task unassigned themselves a few hours ago. Can you assign me the task? I am ready to jump on it and finish it as soon as possible. I have already commented above. I have extensive experience with dashboards, user analytics and end point implementation, and I'd be glad to take on this issue.

HumbertoTM10 commented 3 months ago

My background and how it can be leveraged

I have 4 years working in development environments, have encountered several challenges, requests and teams focusing in reusable and efficient code, so that gives me a better understanding of the code and how to solve problems efficiently.

How I plan on tackling this issue

First of all will look at the data sources and data available in order to understand what is required to be shown, according to that desing appealing dahsboards that show in an easy to understand format that data. After that work towards the backend structure in order to fetch data and be constantly updating it.

At the end, do the testing to make sure the implementations are working properly.

Jemiiah commented 3 months ago

hello @Julian-dev28 this is my first time on the repo I have made contribution to other repositories and I'm a frontend developer please I would love to contribute to this repository and work on this particular issue and would be giving you frequent feedback as I'm getting the work done!!

Jemiiah commented 3 months ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

Hello @Julian-dev28 I'm a web 3 blockchain developer who's contributing to old and new repositories this would be my first time on this repo would love the opportunity to contribute to this project

How I plan on tackling this issue

  1. Design Dashboard UI: Create wireframes or mockups: Use a design tool like Figma, Sketch, or Adobe XD. Sketch the layout with sections for different metrics (active users, transactions, etc.). Ensure it’s intuitive by following UI/UX best practices.

  2. Fetch Analytics Data: Set up your backend: Choose a backend framework (Node.js with Express, Django, Flask, etc.).

  3. Display Data in Charts and Graphs: Set up your frontend: Choose a frontend framework (React, Vue, Angular).

Install a charting library (Chart.js, D3.js, Plotly).

Example using React and Chart.js: Connect to the data source (database or analytics API).

Write endpoints to fetch data. Example in Node.js: npx create-react-app my-dashboard cd my-dashboard npm install chart.js react-chartjs-2 axios

  1. Ensure Real-Time Updates: Implement WebSockets: Use Socket.IO for real-time communication in Node.js. npm install socket.io

// In your backend code const http = require('http').Server(app); const io = require('socket.io')(http);

io.on('connection', (socket) => { console.log('a user connected'); // Emit data updates setInterval(() => { const data = fetchDataFromSource(); socket.emit('updateData', data); }, 10000); // Update every 10 seconds });

http.listen(PORT, () => { console.log(Server is running on port ${PORT}); });

// In the React frontend import { useEffect, useState } from 'react'; import io from 'socket.io-client';

const socket = io('http://localhost:3000');

useEffect(() => { socket.on('updateData', (newData) => { setData(newData); }); }, []);

  1. Design Dashboard UI: Create wireframes or mockups: Use a design tool like Figma, Sketch, or Adobe XD. Sketch the layout with sections for different metrics (active users, transactions, etc.). Ensure it’s intuitive by following UI/UX best practices.

  2. Fetch Analytics Data: Set up the backend: Choose a backend framework (Node.js with Express, Django, Flask, etc.).

Connect to your data source (database or analytics API).

Write endpoints to fetch data. Example in Node.js:

javascript

const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000;

app.get('/api/analytics', (req, res) => { // Fetch data from your database or API const data = fetchDataFromSource(); res.json(data); });

app.listen(PORT, () => { console.log(Server is running on port ${PORT}); });

function fetchDataFromSource() { // Implement your data fetching logic here return { activeUsers: 120, transactions: 45 }; }

  1. Display Data in Charts and Graphs: Set up the frontend: Choose a frontend framework (React, Vue, Angular).

npx create-react-app my-dashboard cd my-dashboard npm install chart.js react-chartjs-2 axios javascript

// src/App.js import React, { useEffect, useState } from 'react'; import { Bar } from 'react-chartjs-2'; import axios from 'axios';

function App() { const [data, setData] = useState({});

useEffect(() => {
    axios.get('/api/analytics').then(response => {
        setData(response.data);
    });
}, []);

const chartData = {
    labels: ['Active Users', 'Transactions'],
    datasets: [{
        label: 'Metrics',
        data: [data.activeUsers, data.transactions],
        backgroundColor: ['rgba(75, 192, 192, 0.6)', 'rgba(153, 102, 255, 0.6)']
    }]
};

return (
    <div className="App">
        <h1>User Analytics Dashboard</h1>
        <Bar data={chartData} />
    </div>
);

}

export default App;

  1. Ensure Real-Time Updates: Implement WebSockets: Use Socket.IO for real-time communication in Node.js.

npm install socket.io javascript

// In your backend code const http = require('http').Server(app); const io = require('socket.io')(http);

io.on('connection', (socket) => { console.log('a user connected'); // Emit data updates setInterval(() => { const data = fetchDataFromSource(); socket.emit('updateData', data); }, 10000); // Update every 10 seconds });

http.listen(PORT, () => { console.log(Server is running on port ${PORT}); }); javascript

import { useEffect, useState } from 'react'; import io from 'socket.io-client';

const socket = io('http://localhost:3000');

useEffect(() => { socket.on('updateData', (newData) => { setData(newData); }); }, []);

  1. Test Dashboard Functionality: Testing: Write unit tests for your backend endpoints using a testing framework like Jest. Use frontend testing libraries like React Testing Library to test your components. Conduct end-to-end testing using tools like Cypress.

Final Touches: Ensure the dashboard is responsive. Perform usability testing to get feedback from users. Optimize performance to handle large data sets.

Ugo-X commented 3 months ago

@Julian-dev28 , please can i be assigned this?

hart-venus commented 3 months ago

I am applying to this issue via OnlyDust platform.

My background and how it can be leveraged

Hi, I've been programming in web for about 2 years, I've also been interested in rust and i know most of the syntax, I'd love to be in this project.

How I plan on tackling this issue

  1. Research websocket implementation for Rust backend
  2. Implement real time data fetching for the rust backend
  3. ensure correct functionality via unit tests and ensure all database secrets are secure before connecting to typescript UI
  4. render typescript UI with websockets
  5. finish dashboard components
Jemiiah commented 3 months ago

hello @Julian-dev28 pls can i work on this issue

onlydustapp[bot] commented 3 months ago

The maintainer Julian-dev28 has assigned Jemiiah to this issue via OnlyDust Platform. Good luck!

Jemiiah commented 3 months ago

@Julian-dev28 pls can I get the contract-ID

--contract-id

Jemiiah commented 3 months ago

Hello @Julian-dev28 i tried messaging you telegram no response I would like clarification on certain things :

Backend Framework: I want to confirm if I’ll be using Next.js server-side capabilities for the backend, or if I’ll set up a separate backend service? If a separate backend is considered, what technologies I’m I evaluating?

Data Storage: How will I store and manage the analytics data? I’m I considering a dedicated database, and if so, which one (e.g., PostgreSQL, MongoDB)?

Events: I’m I going to setup the events listeners| indexer on the backend or what infra do you suggest here?