Project Info
Inspiration
At work, visual dashboards are essential but tedious to create. Many engineers spend significant time building and maintaining internal dashboards, manually assembling components and struggling to determine the most relevant visualizations. Existing solutions are static, requiring users to recreate all visualizations whenever the data changes and manually fine-tune charts. We wanted to build a tool that simplifies this process—one that dynamically generates interactive dashboards from a Google Sheet, making data visualization effortless and adaptable.
What it does
Dashify transforms a Google Sheet into an interactive, customizable dashboard. Users provide a link to their sheet and the tool: Generates dynamic charts based on spreadsheet data. Allows real-time customization of visualizations. Automatically updates charts when the source data changes. Supports drag-and-drop for easy chart rearrangement.
How we built it
We started by identifying gaps in existing spreadsheet tools and brainstorming a solution to streamline data visualization. Our development process was guided by the expected user flow. Using Vercel’s v0, we created the initial app template and then integrated Google Sheets. We integrated with the OpenAI API allowing us to generate visualizations and reason through a user's data on the fly. Using Recharts, we rendered charts that update in real time as data changes.
Challenges we ran into
One of our biggest challenges was managing the variability of LLM-generated output when dealing with highly diverse spreadsheet data. Enforcing a strict structured format was too rigid, while allowing open-ended responses led to excessive unpredictability. Striking the right balance required careful prompt engineering and iterative refinement. We also faced difficulties in identifying a clear gap in existing Google Sheets tools that our solution could uniquely address. Additionally, defining the project scope was challenging, as there were many potential directions we could explore.
Accomplishments we're proud of
We are proud of coming up with an idea that addresses a common problem we all experience. We successfully built an easy-to-use user interface that makes interacting with the dashboard simple. We implemented a sync functionality that ensures the dashboard is updated on click when data changes. Finally, we were able to figure out how to get the LLM to reason over data, which was a complex challenge but a rewarding accomplishment.
What we learned
We learned how to fine-tune prompts and structure LLM outputs to create reliable and meaningful chart recommendations. Keeping the dashboard in sync with Google Sheets was trickier than expected, requiring efficient polling and state management. We realized that a great UX is just as important as the AI itself—users need intuitive controls to refine charts
What's next
User Accounts & Dashboard Management – Save your dashboards, revisit them anytime, and make edits effortlessly. Link to a user's Google account to enable dashboard creation for privately owned sheets. Leverage a wider range of chart types available on Recharts for richer data representation. Insights Tab – Get a concise, AI-powered breakdown of key insights from your data, making analysis more intuitive and actionable.
Dashify
How to Run
1. Start the Backend
Run the following commands in your terminal:
export OPENAI_API_KEY=[YourOpenAPIKey]
export GOOGLE_API_KEY=[YourGoogleAPIKey]
python server.py
2. Start the Frontend
Open a new terminal window and enter:
npm run dev
3. Open the Application
Go to:
http://localhost:3000/
How to Test
Use any publicly shared sample sheet, or use the following sample sheet URL: Sample Google Sheet
Analysis
View
Metric
- 20
- 11
- 7
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- Next.jsIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- FlaskClaimed
- OpenAIClaimed
- VercelClaimed
6 of 9 appear in the indexed code. 3 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
185 KB
Source files
63
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
halliefaust/sheet2dash
75 files · 545 KB · @ 3bb0a1a
Structure
Interface
57 files · 76%Screens, components and styles rendered to the user.
Application logic
5 files · 7%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript91%
- Python6%
- CSS3%
- Markdown0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 58- @hookform/resolvers
- @radix-ui/react-accordion
- @radix-ui/react-alert-dialog
- @radix-ui/react-aspect-ratio
- @radix-ui/react-avatar
- @radix-ui/react-checkbox
- @radix-ui/react-collapsible
- @radix-ui/react-context-menu
- @radix-ui/react-dialog
- @radix-ui/react-dropdown-menu
- @radix-ui/react-hover-card
- @radix-ui/react-label
- @radix-ui/react-menubar
- @radix-ui/react-navigation-menu
- @radix-ui/react-popover
- @radix-ui/react-progress
- @radix-ui/react-radio-group
- @radix-ui/react-scroll-area
- +40 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.