[{"data":1,"prerenderedAt":1218},["ShallowReactive",2],{"navigation":3,"blog":93,"\u002Fblog":106},[4,36,54,72],{"title":5,"path":6,"stem":7,"children":8,"icon":35},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[9,11,15,19,23,27,31],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Creating your team","\u002Fdocs\u002Fgetting-started\u002Fcreate-team","1.docs\u002F1.getting-started\u002F2.create-team",{"title":16,"path":17,"stem":18},"Adding a project","\u002Fdocs\u002Fgetting-started\u002Fadding-a-project","1.docs\u002F1.getting-started\u002F3.adding-a-project",{"title":20,"path":21,"stem":22},"Team & User Permissions","\u002Fdocs\u002Fgetting-started\u002Fteam-permissions","1.docs\u002F1.getting-started\u002F4.team-permissions",{"title":24,"path":25,"stem":26},"Inviting team Members","\u002Fdocs\u002Fgetting-started\u002Finviting-team-members","1.docs\u002F1.getting-started\u002F5.inviting-team-members",{"title":28,"path":29,"stem":30},"Connect Integration Identities","\u002Fdocs\u002Fgetting-started\u002Fconnecting-identities","1.docs\u002F1.getting-started\u002F6.connecting-identities",{"title":32,"path":33,"stem":34},"Setting Priorities, Statuses, etc.","\u002Fdocs\u002Fgetting-started\u002Fsetting-priorities-statuses","1.docs\u002F1.getting-started\u002F7.setting-priorities-statuses",false,{"title":37,"path":38,"stem":39,"children":40},"Collecting Feedback","\u002Fdocs\u002Fcollecting-feedback","1.docs\u002F2.collecting-feedback\u002F1.index",[41,42,46,50],{"title":37,"path":38,"stem":39},{"title":43,"path":44,"stem":45},"Guest Feedback Embed","\u002Fdocs\u002Fcollecting-feedback\u002Fguest-embed","1.docs\u002F2.collecting-feedback\u002F2.guest-embed",{"title":47,"path":48,"stem":49},"Browser Extensions","\u002Fdocs\u002Fcollecting-feedback\u002Fbrowser-extensions","1.docs\u002F2.collecting-feedback\u002F3.browser-extensions",{"title":51,"path":52,"stem":53},"Feedback Comments","\u002Fdocs\u002Fcollecting-feedback\u002Ffeedback-comments","1.docs\u002F2.collecting-feedback\u002F4.feedback-comments",{"title":55,"path":56,"stem":57,"children":58},"Integrations","\u002Fdocs\u002Fintegrations","1.docs\u002F3.integrations\u002F1.index",[59,60,64,68],{"title":55,"path":56,"stem":57},{"title":61,"path":62,"stem":63},"GitHub","\u002Fdocs\u002Fintegrations\u002Fgithub","1.docs\u002F3.integrations\u002F2.github",{"title":65,"path":66,"stem":67},"GitLab","\u002Fdocs\u002Fintegrations\u002Fgitlab","1.docs\u002F3.integrations\u002F3.gitlab",{"title":69,"path":70,"stem":71},"Email Integration","\u002Fdocs\u002Fintegrations\u002Femail","1.docs\u002F3.integrations\u002F4.email",{"title":73,"path":74,"stem":75,"children":76,"page":35},"Community","\u002Fdocs\u002Fcommunity","1.docs\u002F5.community",[77,81,85,89],{"title":78,"path":79,"stem":80},"Get Connected","\u002Fdocs\u002Fcommunity\u002Fget-connected","1.docs\u002F5.community\u002F1.get-connected",{"title":82,"path":83,"stem":84},"Request A Feature","\u002Fdocs\u002Fcommunity\u002Frequest-features","1.docs\u002F5.community\u002F2.request-features",{"title":86,"path":87,"stem":88},"Reporting Bugs","\u002Fdocs\u002Fcommunity\u002Freport-a-bug","1.docs\u002F5.community\u002F3.report-a-bug",{"title":90,"path":91,"stem":92},"Contact Support","\u002Fdocs\u002Fcommunity\u002Fcontact-support","1.docs\u002F5.community\u002F4.contact-support",{"id":94,"title":95,"body":96,"description":97,"extension":98,"meta":99,"navigation":100,"path":102,"seo":103,"stem":104,"__hash__":105},"blog\u002F3.blog.yml","Blog - Product updates and tips for better feedback workflows",null,"Product updates, engineering insights, and tips for better feedback workflows.","yml",{},{"icon":101},"i-lucide-pencil","\u002Fblog",{"title":95,"description":97},"3.blog","Oxie6eFAdc85fRXYr47CuIfsb5np1inYlKDQpFK1dWQ",[107,293,414,524,615,754,928,1024,1081],{"id":108,"title":109,"authors":110,"badge":116,"body":118,"date":282,"description":283,"extension":284,"image":285,"meta":287,"navigation":288,"path":289,"seo":290,"stem":291,"__hash__":292},"posts\u002F3.blog\u002Fbetter-feedback-ux-with-momentum-modal-upgrade.md","Better Feedback UX With Momentum Modal Upgrade",[111],{"name":112,"to":113,"avatar":114},"Dan Pastori","https:\u002F\u002Fx.com\u002Fdanpastori",{"src":115},"\u002Fimages\u002Favatars\u002Fdan-pastori.jpeg",{"label":117},"Product Development",{"type":119,"value":120,"toc":273},"minimark",[121,125,136,141,144,147,154,166,170,185,198,207,211,218,227,230,234,240,243,246,250,259],[122,123,124],"p",{},"That feeling as a dev, when you know there's a better way to accomplish a task, you don't know what it is and it's kind of difficult to explain. Even asking your helpful AI for solutions can be a challenge because explaining the what you are looking for is kind of bizarre. It's frustrating.",[122,126,127,128,135],{},"However, once you solve the issue, the feeling is reversed. Your head clears and a weight is lifted off your shoulders. That's exactly the way I feel after upgrading our feedback page to use ",[129,130,134],"a",{"href":131,"rel":132},"https:\u002F\u002Fgithub.com\u002Flepikhinb\u002Fmomentum-modal",[133],"nofollow","Boris Lepikhin's Momentum Modal package","!",[137,138,140],"h2",{"id":139},"the-issue","The Issue",[122,142,143],{},"On our primary feedback page we have a list of reported feedback in a table. When the user clicks on an individual item, a sidebar pops out displaying a lot more detail. Since the individual feedback is not an entire page, the feedback table should display behind the transparent popout. Simple right?",[122,145,146],{},"Well, we needed to add deep linking. If we were just sending a request to the server saying, \"hey, load feedback ID 41\" and we just displayed it, that'd be a different story. We'd make the sidebar a component and show\u002Fhide when needed. With deep linking, we need the URL to represent the individual feedback item we are loading (see image below).",[122,148,149],{},[150,151],"img",{"alt":152,"src":153},"The issue we encountered","\u002Fimages\u002Fblog\u002Fmomentum-modal-upgrade\u002Fissue-overview.png",[122,155,156,157,161,162,165],{},"We also needed to load the feedback table when loading individual feedback. Even though, technically, that table lives on ",[158,159,160],"code",{},"\u002Ffeedback"," compared to ",[158,163,164],{},"\u002Ffeedback\u002F{id}",".",[137,167,169],{"id":168},"initial-approach","Initial approach",[122,171,172,173,178,179,184],{},"Initially, I had this resolved in a roundabout way. We use ",[129,174,177],{"href":175,"rel":176},"https:\u002F\u002Finertiajs.com\u002F",[133],"InertiaJS"," + ",[129,180,183],{"href":181,"rel":182},"https:\u002F\u002Fvuejs.org\u002F",[133],"Vue"," to build Bugflow, so the initial solution I had was to make a layout with a slot to display the slideout.",[122,186,187,188,190,191,194,195,197],{},"Essentially, what that meant was we'd have a layout for the ",[158,189,160],{}," page. The page itself would simply reference the layout with nothing in the ",[158,192,193],{},"\u003Cslot\u002F>",". When we navigated to the ",[158,196,164],{}," URL, we'd then inject our slide out.",[122,199,200,201,206],{},"It worked, but this was the point where I was like, \"I feel there's a better solution, but I don't even know how to describe it\". However, by stroke of luck, I found an example in the wild while going to LemonSqueezy to update our ",[129,202,205],{"href":203,"rel":204},"https:\u002F\u002Fserversideup.net\u002Fbuilding-multi-platform-browser-extensions\u002F",[133],"Browser Extension Book",". I noticed when you managed a product, a sidebar popped out and it was deep linked. I also knew they were using Inertia. Now I was curious and I started asking around.",[137,208,210],{"id":209},"finding-the-solution","Finding the solution",[122,212,213,214,217],{},"It wasn't until I asked around on Twitter that I was referred to ",[129,215,134],{"href":131,"rel":216},[133]," package. I've seen it before, but it didn't really click on how or why I should use it, until then. I then realized that this was EXACTLY what I was looking for!",[122,219,220,221,226],{},"Right away in the ",[129,222,225],{"href":223,"rel":224},"https:\u002F\u002Fgithub.com\u002Flepikhinb\u002Fmomentum-modal?tab=readme-ov-file#setup",[133],"README's Set Up section",", he mentions that \"Modal is a headless component, meaning you have full control over its look\". That's it! My slideout, in the context of how I was using it, was a modal. And with the package I could deep link to that slideout!",[122,228,229],{},"I went to work. A few hours later, I had my clunky \"Feedback\" layout replaced with the slick momentum modal package. The result is much, much better!",[137,231,233],{"id":232},"why-it-matters","Why it matters",[122,235,236,237,239],{},"So, enough with the development rant, why does it matter to the user? First and foremost, the experience of the page is quicker and more stable. The ",[158,238,160],{}," page is the primary focus of a Bugflow project. By upgrading to the momentum modal, the user can navigate individual feedback items much faster, get the data they need, and resolve the feedback with ease.",[122,241,242],{},"On the code side, there's a heck of a lot less mess which results in fewer bugs. Item state is managed efficiently. Loading data is done the \"InertiaJS\" way. The app can now scale with ease and we've gotten rid of a huge piece of tech debt.",[122,244,245],{},"In the next release, we will be approaching the other major slide out: Adding integrations. Almost from the reverse perspective where we don't have the slideout deep-linked, but will be adding deep linking so we can manage state easier instead of a bunch of \"lazy-loaded\" pieces of data.",[137,247,249],{"id":248},"thanks","Thanks",[122,251,252,253,258],{},"Many thanks to ",[129,254,257],{"href":255,"rel":256},"https:\u002F\u002Fx.com\u002Flepikhinb",[133],"Boris Lepikhin"," and this incredible InertiaJS Package! He's also pushing InertiaJS forward with a ton of extremely helpful PRs. Highly suggest giving him a follow!",[122,260,261,262,267,268,272],{},"We will continue to strive to make Bugflow as efficient and useful as possible to help you resolve feedback in record time. Reach out on ",[129,263,266],{"href":264,"rel":265},"https:\u002F\u002Fx.com\u002Fgetbugflow",[133],"X (Formerly Twitter)"," or contact us at ",[129,269,271],{"href":270},"mailto:support@bugflow.io","support@bugflow.io"," with any questions!",{"title":274,"searchDepth":275,"depth":275,"links":276},"",2,[277,278,279,280,281],{"id":139,"depth":275,"text":140},{"id":168,"depth":275,"text":169},{"id":209,"depth":275,"text":210},{"id":232,"depth":275,"text":233},{"id":248,"depth":275,"text":249},"2024-05-22","This little tweak makes it much more efficient to view and resolve reported feedback.","md",{"src":286},"\u002Fimages\u002Fblog\u002Fmomentum-modal-upgrade\u002Fmomentum-modal-og.jpg",{},true,"\u002Fblog\u002Fbetter-feedback-ux-with-momentum-modal-upgrade",{"title":109,"description":283},"3.blog\u002Fbetter-feedback-ux-with-momentum-modal-upgrade","RjdCZ41b-7stwxSTYXmZLrKZCDr7crm46QUrvyZy3gs",{"id":294,"title":295,"authors":296,"badge":299,"body":300,"date":405,"description":406,"extension":284,"image":407,"meta":409,"navigation":288,"path":410,"seo":411,"stem":412,"__hash__":413},"posts\u002F3.blog\u002Fchoosing-our-tech-stack.md","Choosing our Tech Stack",[297],{"name":112,"to":113,"avatar":298},{"src":115},{"label":117},{"type":119,"value":301,"toc":397},[302,305,314,318,327,330,334,342,351,354,358,361,364,368,371,374,378,381,385,388],[122,303,304],{},"As a developer, I'm always interested in what apps use for their tech stack. It's wild to see where the app started compared to where the app is currently and how the tech stack has migrated along with it. I figured \"let's be one of those companies\" from the get go.",[122,306,307,308,313],{},"From the tech side, I find it inspiring to see what is possible with certain technology solutions.  ",[129,309,312],{"href":310,"rel":311},"https:\u002F\u002Fusefathom.com\u002Fblog",[133],"Fathom Analytics"," does an absolutely amazing job of inspiring and guiding while also being transparent. At Bugflow, there are a lot of moving parts which I find fascinating. Let's dive in!",[137,315,317],{"id":316},"backend-and-api-is-laravel","Backend and API is Laravel",[122,319,320,321,326],{},"We've been working with ",[129,322,325],{"href":323,"rel":324},"https:\u002F\u002Flaravel.com\u002F",[133],"Laravel"," since 4.2 and absolutely love it. Laravel provides the perfect amount of flexibility, while handling security and allowing you to design custom solutions without getting in the way. Not only have we been working with PHP for over 13 years, the future has never looked brighter. Laravel integrates with so many powerful technology packages, we can customize and scale to any level.",[122,328,329],{},"Bugflow is built with scalability in mind to handle a hundreds, if not thousands of simultaneous API requests and callbacks. Since PHP 8, performance has been the heart PHP releases and Laravel has been pushing the envelope. When it comes to scalability, Laravel works flawlessly with Redis and is flexible enough to be deployed across multiple servers.",[137,331,333],{"id":332},"we-handle-websockets-with-soketi-laravel","We handle websockets with Soketi & Laravel",[122,335,336,341],{},[129,337,340],{"href":338,"rel":339},"https:\u002F\u002Fdocs.soketi.app\u002F",[133],"Soketi"," is a \"blazing fast open-source WebSockets Server\". Soketi provides a simple, scalable solution to handling real time communication between the frontend and backend of your application. Websockets are relatively tricky to deal with, but the combination of Laravel and Soketi make it a breeze!",[122,343,344,345,350],{},"Laravel has built in tools for handling websockets both on the front and back end. Since Soketi is built around the Pusher API, there's a PHP package that works out of the box. On the frontend, Laravel provides ",[129,346,349],{"href":347,"rel":348},"https:\u002F\u002Flaravel.com\u002Fdocs\u002F9.x\u002Fbroadcasting",[133],"Laravel Echo"," which allows you to quickly connect to your backend websocket server for handling events.",[122,352,353],{},"When it comes to handling feedback, both on the Bugflow application side and on the Bugflow embed, we want it to be real time. The goal of Bugflow is to allow users to get feedback and solve bugs as quickly as possible. Using Soketi allows us to send feedback directly from the user's site, to the repo, ticketing app, support solution, etc. instantaneously. Upon handling the request, we can communicate right back to the user without them refreshing the page. This keeps all issues in sync at all times!",[137,355,357],{"id":356},"redis-handles-our-queues-and-caching","Redis handles our Queues and Caching",[122,359,360],{},"Redis orchestrates our application. From handling queued tasks to caching high-availability routes, Redis is behind the scenes making sure tasks get handled and data is available. When submitting visual feedback, there is a multiple step process that takes place. If we did this synchronously, without a queue, it could easily take 3-4 seconds leading to a stagnant, weird user experience. So we send those tasks off to a queue. This ensures we get the feedback to where it needs to go and the user, or project manager can continue to debug the application quickly.",[122,362,363],{},"When it comes to returning high availability data, Redis is there as well. Redis is a slick caching engine that can quickly return data that is needed so no one is left with a spinning icon when they are trying to get work done. Oh, and the best part? Redis' queues and caching are fully supported within Laravel so implementation came naturally.",[137,365,367],{"id":366},"vue-3-tailwind-for-the-ui","Vue 3 & Tailwind For the UI",[122,369,370],{},"Vue 3 combined with the magic of Tailwind makes building our UI as quick and seamless as possible. Using Vue 3 allows us to build a wonderful user experience that makes the app as responsive and functional as possible. Tailwind makes it look beautiful.",[122,372,373],{},"When customers use Bugflow, there are a lot of moving parts to get set up. Vue 3 allows us to quickly wrap the functionality into a beautiful experience so the complexity is as hidden and beautiful as possible. Tailwind allows us to keep package size small, and UI clean.",[137,375,377],{"id":376},"pure-javascript-to-build-the-embed","Pure Javascript to build the Embed",[122,379,380],{},"But what about the embed, it's kind of the most important piece? The embed that allows users to submit visual feedback is 100% pure Javascript. No framework, just vanilla JS. We chose to build the embed this way so it's highly optimized and as light weight as possible. Designing the embed this way has multiple benefits. First, it's lightweight, so when you embed it on your site, it loads extremely fast. Second, we can easily wrap it in a native browser extension using the same code (more on that soon)!",[137,382,384],{"id":383},"wrapping-up","Wrapping Up",[122,386,387],{},"A lot of thought went into tech stack that we chose. Being a two person company at the moment, we wanted to find the balance of speed and flexibility along with solid and secure. We didn't want to get caught in a situation where we couldn't maneuver our app to where we wanted it to go. Also, we strive for proper security and development principles.",[122,389,390,391,396],{},"I wanted to provide a little insight and transparency and to open the door for any questions on how to build apps or have any questions about using the tech we shared. There are many wonderful solutions out there and multiple ways to approach developing an app. If you have any questions about development or how Bugflow can help you speed up app development, DMs are open on Twitter (",[129,392,395],{"href":393,"rel":394},"https:\u002F\u002Ftwitter.com\u002Fdanpastori",[133],"@danpastori",").",{"title":274,"searchDepth":275,"depth":275,"links":398},[399,400,401,402,403,404],{"id":316,"depth":275,"text":317},{"id":332,"depth":275,"text":333},{"id":356,"depth":275,"text":357},{"id":366,"depth":275,"text":367},{"id":376,"depth":275,"text":377},{"id":383,"depth":275,"text":384},"2022-06-10","I wanted to provide a little transparency on how we built Bugflow and what technologies we use to add functionality.",{"src":408},"\u002Fimages\u002Fblog\u002Fchoosing-our-tech-stack\u002Fbugflow-tech-stack-featured.jpeg",{},"\u002Fblog\u002Fchoosing-our-tech-stack",{"title":295,"description":406},"3.blog\u002Fchoosing-our-tech-stack","gHgxXGSEOLbSEcUxwXPCPkZOU-__HpLbvYWSb-HbiE4",{"id":415,"title":416,"authors":417,"badge":420,"body":421,"date":515,"description":516,"extension":284,"image":517,"meta":519,"navigation":288,"path":520,"seo":521,"stem":522,"__hash__":523},"posts\u002F3.blog\u002Fcollecting-feedback-on-behalf-of-a-user.md","Collecting Feedback on Behalf of a User",[418],{"name":112,"to":113,"avatar":419},{"src":115},{"label":117},{"type":119,"value":422,"toc":510},[423,426,429,433,436,439,445,449,452,461,464,470,474,486,489,492,495,498,504],[122,424,425],{},"When it comes to collecting feedback from your clients or your team, knowing who reported the feedback is crucial. Understanding how the user is using the product helps to resolve issues and create features as quick as possible.",[122,427,428],{},"With Bugflow, we go a step further. Not only will you see who reported the issue within Bugflow, but also in the destination tool where your project is being managed.",[137,430,432],{"id":431},"use-case-collecting-quality-qa-feedback-with-jira","Use Case: Collecting Quality QA Feedback with Jira",[122,434,435],{},"Let's say you have a QA team that uses Jira to manage feedback and Bugflow to report feedback. A member of your QA team reports feedback through Bugflow, but your team wants to manage the feedback within Jira. You don't want to cross-reference who reported what, set up duplicate email systems and get a ton of noise in your inbox.",[122,437,438],{},"With Bugflow's identity connection, you are able to see who reported the issue without cross referencing Bugflow and without receiving duplicate emails. The issue comes into Jira from the user account who reported it, keeping your workflow in-tact and quickly collecting feedback.",[122,440,441],{},[150,442],{"alt":443,"src":444},"Jira Feedback","\u002Fimages\u002Fblog\u002Fcollecting-feedback-on-behalf-of-a-user\u002Fjira-feedback.png",[137,446,448],{"id":447},"use-case-development-team-on-github","Use Case: Development Team on GitHub",[122,450,451],{},"Working on a development team, having the issue get created from the user who reported it, streamlines communication, helping you solve issues with ease while keeping you in the workflow you are used to.",[122,453,454,455,460],{},"Within our small team at ",[129,456,459],{"href":457,"rel":458},"https:\u002F\u002Fserversideup.net",[133],"ServerSideUp",", Jay uses Bugflow to do QA rounds on our apps, while I fix the bugs. When he reports an issue, and it comes in from him, I can respond right in GitHub to the issue and he will be notified.",[122,462,463],{},"All communication is in one centralized location. Using Bugflow to collect high quality feedback and organizing the issue into an actionable item, allows a development team to operate seamlessly and get the answers they need right away.",[122,465,466],{},[150,467],{"alt":468,"src":469},"GitHub Feedback","\u002Fimages\u002Fblog\u002Fcollecting-feedback-on-behalf-of-a-user\u002Fgithub-feedback.png",[137,471,473],{"id":472},"behind-the-scenes-how-do-our-integrations-get-the-right-user","Behind the Scenes: How do our integrations get the right user?",[122,475,476,477,482,483,165],{},"Identity management is crucial to making Bugflow operate and is the base for all current and upcoming features (automated reports, feature request boards, etc.). Behind the scenes we built an identity management platform using ",[129,478,481],{"href":479,"rel":480},"https:\u002F\u002Fdocs.saloon.dev\u002F",[133],"SaloonPHP"," and ",[129,484,325],{"href":323,"rel":485},[133],[122,487,488],{},"By structuring our system correctly, we are able to quickly bind third-party integration identities. These identities are bound through an OAuth 2 connection, and stored securely in our database.",[122,490,491],{},"When feedback is reported, we quickly persist the data so we can use it within Bugflow and process it through the desired automation. From there, we create a queued task. The actual sending to the destination takes some time since it's a third party and often multiple steps are involved.",[122,493,494],{},"The queue will receive a feedback record, see that it was reported by the user and it's destination. It will look up the identity for that user on the destination. All third-party integrations provide some sort of user ID when you connect through OAuth. We then, fill that in on the request to the third-party integration and voila! The user who reported the feedback is mapped to the user on the third-party!",[122,496,497],{},"Check out the diagram below for a visual on how this works.",[122,499,500],{},[150,501],{"alt":502,"src":503},"Bugflow diagram on reporting feedback on behalf of the user","\u002Fimages\u002Fblog\u002Fcollecting-feedback-on-behalf-of-a-user\u002Fbugflow.png",[122,505,506,507,509],{},"Of course, if you have any questions or want further information before choosing to switch your project or agency to Bugflow, feel free to reach out to ",[129,508,271],{"href":270},". We'd love to help!",{"title":274,"searchDepth":275,"depth":275,"links":511},[512,513,514],{"id":431,"depth":275,"text":432},{"id":447,"depth":275,"text":448},{"id":472,"depth":275,"text":473},"2024-05-08","It's important to know who submitted the feedback in the tool your team is working in. Let's see how Bugflow makes this work!",{"src":518},"\u002Fimages\u002Fblog\u002Fcollecting-feedback-on-behalf-of-a-user\u002Fuser-feedback-og.jpg",{},"\u002Fblog\u002Fcollecting-feedback-on-behalf-of-a-user",{"title":416,"description":516},"3.blog\u002Fcollecting-feedback-on-behalf-of-a-user","XgQ0TYpqCgAHD5wYPmxOV70VwffsVwogRJv2oeEyGKA",{"id":525,"title":526,"authors":527,"badge":530,"body":531,"date":606,"description":607,"extension":284,"image":608,"meta":610,"navigation":288,"path":611,"seo":612,"stem":613,"__hash__":614},"posts\u002F3.blog\u002Fnative-two-way-repo-syncing-for-github-gitlab.md","Native Two-Way Repo Syncing for GitHub & GitLab",[528],{"name":112,"to":113,"avatar":529},{"src":115},{"label":117},{"type":119,"value":532,"toc":600},[533,536,540,543,546,550,559,562,565,568,572,575,578,581,585,588],[122,534,535],{},"One of the most important features we've developed for Bugflow is Two-Way Native Repo syncing for GitHub & GitLab. Whether your project manager is reporting a bug, or a customer is submitting feedback, we strive to get that feedback to the right place as quickly as possible. By natively integrating with GitHub and GitLab, as soon as the feedback is reported, it's on Bugflow and getting routed to your project repo. Developers then have instant access to the feedback, all the meta data necessary to speed up the fix, and can start debugging immediately.",[137,537,539],{"id":538},"how-it-works","How it Works",[122,541,542],{},"Once the feedback is recorded and submitted via the API it's stored in our database immediately and a queue process is initiated. This allows the user submitting the feedback to quickly record more and not wait for the feedback to hit the repos through an API (a slightly longer process).",[122,544,545],{},"When our queue grabs the feedback, we load the information that you set up for routing the feedback. Which repo, what labels should be assigned, who should it be assigned to, etc? We then take that feedback and submit it to the repository directly from Bugflow making the process seamless and efficient.",[137,547,549],{"id":548},"no-third-party-middleman","No Third Party Middleman",[122,551,552,553,558],{},"We chose not to use a third party gateway for repo submissions for a variety of reasons. Most importantly is we wanted to be able to adapt as quickly as possible to changes from GitHub and GitLab to ensure you can use Bugflow with the latest and greatest features like the new ",[129,554,557],{"href":555,"rel":556},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fissues\u002Fplanning-and-tracking-with-projects\u002Flearning-about-projects\u002Fabout-projects",[133],"GitHub Projects",". Both platforms change dynamically and we want to be able to adapt as quickly as possible.",[122,560,561],{},"Second, we are continually enhancing Bugflow, adding new feedback features, new metadata, and new integrations to assist your development and product creation. We want you to be able to use these features right away and not have to adjust settings all over the place or wait for an update from a third-party. By writing native integrations, this is possible.",[122,563,564],{},"Finally, and most importantly, we want to ensure that your data is secure. By writing native integrations, we can ensure that your data is secure and not being passed through a third party. We take security very seriously and want to limit the steps it passes through to only places you trust.",[122,566,567],{},"This is awesome, but we've only talked about one direction.",[137,569,571],{"id":570},"what-makes-this-a-two-way-sync","What makes this a \"two-way\" sync?",[122,573,574],{},"Two-way sync is where the magic happens. When you install Bugflow on GitHub or GitLab, we create a webhook that allows bug data to be synced back to Bugflow. When a change is made, we grab the data and keep the local Bugflow data in sync.",[122,576,577],{},"This functionality also works for new milestones, labels, assignees, etc. Create a new label on GitHub, it's instantly available in Bugflow to start assigning. Close an issue from a push with GitLab? The issue is flagged as closed in Bugflow.",[122,579,580],{},"Keeping your data in sync both directions allows us to build features that work with your development process and to speed up communication and debugging.",[137,582,584],{"id":583},"platform-for-further-enhancements","Platform For Further Enhancements",[122,586,587],{},"Our vision of Bugflow heavily relys on these native integrations. We want to be able to build features that work with your development process and to speed up communication between customers and project managers. We have a lot of exciting features in the pipeline that will be built on top of this foundation and can't wait to share them with you!",[122,589,590,591,594,595,165],{},"If you have any questions about how this works, or how to get started using Bugflow, please reach out to us on Twitter (",[129,592,395],{"href":393,"rel":593},[133],") or hop on our ",[129,596,599],{"href":597,"rel":598},"https:\u002F\u002Fbugflow.io\u002Fdiscord",[133],"Discord Channel",{"title":274,"searchDepth":275,"depth":275,"links":601},[602,603,604,605],{"id":538,"depth":275,"text":539},{"id":548,"depth":275,"text":549},{"id":570,"depth":275,"text":571},{"id":583,"depth":275,"text":584},"2023-07-21","We're excited to announce that we've added native two-way repo syncing for GitHub and GitLab!",{"src":609},"\u002Fimages\u002Fblog\u002Fnative-two-way-repo-syncing-for-github-gitlab\u002Fhighway-featured-image.jpg",{},"\u002Fblog\u002Fnative-two-way-repo-syncing-for-github-gitlab",{"title":526,"description":607},"3.blog\u002Fnative-two-way-repo-syncing-for-github-gitlab","AZVYOu49uR0YysU4lb_LxSr1jFy_-HBUwRGeJ1xddN8",{"id":616,"title":617,"authors":618,"badge":621,"body":622,"date":745,"description":746,"extension":284,"image":747,"meta":749,"navigation":288,"path":750,"seo":751,"stem":752,"__hash__":753},"posts\u002F3.blog\u002Fprivacy-focused-customer-feedback-bugflow.md","Privacy Focused Customer Feedback with Bugflow",[619],{"name":112,"to":113,"avatar":620},{"src":115},{"label":117},{"type":119,"value":623,"toc":738},[624,627,630,634,637,642,645,658,661,664,667,670,674,677,683,691,694,697,700,704,716,720,729,733],[122,625,626],{},"Bug and feedback reporting should be privacy focused. We are advocates of privacy and believe that your data, the sites you visit, and what you choose to share should be respected and up to you. As an agency, we also want to respect our client's and customer's privacy when implementing Bugflow into their projects.",[122,628,629],{},"That's why Bugflow uses no tracking cookies, requires minimal information for guest feedback, and allows you share only what you choose. So, how do we do it?",[137,631,633],{"id":632},"privacy-focused-guest-feedback-embed","Privacy Focused Guest Feedback Embed",[122,635,636],{},"Let's start with the most public of options. The guest feedback embed. When wanting to collect guest feedback from your customers or clients, or anyone who uses your site, we offer a guest feedback embed. This helpful tool is easy to install and can instantly collect feedback from the users of your web app or site.",[122,638,639],{},[150,640],{"alt":43,"src":641},"\u002Fimages\u002Fblog\u002Fprivacy-focused-customer-feedback-bugflow\u002Fguest-feedback-embed.png",[122,643,644],{},"The guest embed is loaded from our CDN and configured with just your project's key and any customizations. There's no callbacks or cookies set. If the user chooses not to interact or record feedback, Bugflow has no idea. If the user chooses to submit feedback, there are only 3 required fields:",[646,647,648,652,655],"ul",{},[649,650,651],"li",{},"Name",[649,653,654],{},"Email",[649,656,657],{},"Description of feedback",[122,659,660],{},"There's an option for a longer additional comments section if the user chooses to do so. That's it! Once the feedback is submitted, there's no tracking on where the user chooses to go or what they do next.",[122,662,663],{},"Now, what about the screenshot? The screenshot makes bug reporting extremely helpful for the developer. However, the screenshot could contain super sensitive information. If that's the case, simply remove it! Don't share anything you don't want to share! As we begin to shell out our markup tool, we will also be providing options to hide data that's sensitive and will not be visible to the developer.",[122,665,666],{},"After the feedback is submitted, we store the name and email for 24 hours in the guest's local storage within their browser. Bugflow does not read from this, it's simply just to fill in the guest feedback widget so they don't have to enter this every time they submit feedback.",[122,668,669],{},"Okay, so the guest widget is privacy focused, what about the browser extensions?",[137,671,673],{"id":672},"privacy-in-our-browser-extensions","Privacy in our Browser Extensions",[122,675,676],{},"The Bugflow browser extension is much, much more complex. You get full access to add and upload additional information, assign to project team members, apply statuses, labels, priorities etc. As an agency, the browser extension is an essential tool to give to developers, customers, and project managers to quickly collect more detailed feedback, solve issues, and make changes as quickly as possible.",[122,678,679],{},[150,680],{"alt":681,"src":682},"Bugflow Browser Extension","\u002Fimages\u002Fblog\u002Fprivacy-focused-customer-feedback-bugflow\u002Fbrowser-extension.png",[122,684,685,686,690],{},"However, the browser extension is installed, well, in your browser. That means it's present on every page you visit. It even asks you for access to all URLs when installed. While both of those statements are true, no data is collected on any site you visit. Once again, you only send data to Bugflow if you ",[687,688,689],"strong",{},"choose"," to send the data.",[122,692,693],{},"So how does Bugflow know when to activate on a certain page? Well, when you log into the browser extension, we load your profile, but we also load a cache of all the URL patterns for the projects you are a part of. This data is cached in your local browser. Whenever you visit a page, we check the URL pattern from your local cache, NOT by sending it back to Bugflow! This allows you to visit your banking site, internal company pages, whatever you want and Bugflow will have no idea.",[122,695,696],{},"Even if you visit a site that you have access to from a project within Bugflow, nothing is sent until you actually send it. Let's say you are a part of a project A. You visit project A's site and it matches one of the cached URLs. All the Bugflow extension does is recognize that the URL matches a project you are a part of and let's you record feedback. If you don't record feedback, then nothing gets sent to Bugflow respecting your privacy!",[122,698,699],{},"So what about the data storage itself?",[137,701,703],{"id":702},"enterprise-self-hosted-bugflow","Enterprise, Self-Hosted Bugflow",[122,705,706,707,712,713,165],{},"First of all, we ensure that all data hosted on ",[129,708,711],{"href":709,"rel":710},"http:\u002F\u002Fbugflow.io",[133],"bugflow.io"," is secure, locked down, and not shared anywhere you don't need it to be. However, if you are working on a top secret project and you want the ultimate level of security, we even offer a self-hosted license for Bugflow. This means you'd get a pre-configured Docker container that you can spin up, in house and whatever data gets passed from your clients, customers, or guests goes directly to your instance. You can configure where you want the files stored, what URLs it should run on, and how you want notifications. For more information, contact us at ",[129,714,271],{"href":715},"mailto:support@bugflow.io?subject=Bugflow%20Enterprise%20Request&body=Hello%2C%0A%0AWe%20are%20interested%20in%20using%20Bugflow%20with%20our%20enterprise%20team.%20Can%20you%20please%20send%20us%20more%20information%3F",[137,717,719],{"id":718},"no-google-analytics","No Google Analytics",[122,721,722,723,728],{},"To add a little icing on the cake, we take the respect for your privacy even further by not adding Google Analytics to our marketing site. We do have analytics so we know what pages are being visited, but it's done without tracking cookies and hits our own, self-hosted, ",[129,724,727],{"href":725,"rel":726},"https:\u002F\u002Fplausible.io\u002F",[133],"Plausible Analytics"," instance (a privacy focused Google Analytics alternative).",[137,730,732],{"id":731},"questions","Questions?",[122,734,735,736,509],{},"Hopefully this helps shed some light on how serious we take the privacy of our visitors. If you have any questions or want further information before choosing to switch your project or agency to Bugflow, feel free to reach out to ",[129,737,271],{"href":270},{"title":274,"searchDepth":275,"depth":275,"links":739},[740,741,742,743,744],{"id":632,"depth":275,"text":633},{"id":672,"depth":275,"text":673},{"id":702,"depth":275,"text":703},{"id":718,"depth":275,"text":719},{"id":731,"depth":275,"text":732},"2023-08-29","Bug and feedback reporting should be privacy focused. We are advocates of privacy and believe that your data, the sites you visit, and what you choose to share should be respected and up to you.",{"src":748},"\u002Fimages\u002Fblog\u002Fprivacy-focused-customer-feedback-bugflow\u002Flock-featured-image.jpg",{},"\u002Fblog\u002Fprivacy-focused-customer-feedback-bugflow",{"title":617,"description":746},"3.blog\u002Fprivacy-focused-customer-feedback-bugflow","kIxahqngzrBR8hiO3DJGkhqm4zqrbScT-uElVMT6TJ4",{"id":755,"title":756,"authors":757,"badge":760,"body":761,"date":920,"description":516,"extension":284,"image":921,"meta":923,"navigation":288,"path":924,"seo":925,"stem":926,"__hash__":927},"posts\u002F3.blog\u002Fpublicly-collaborating-on-project-feedback.md","Publicly Collaborating on Project Feedback",[758],{"name":112,"to":113,"avatar":759},{"src":115},{"label":117},{"type":119,"value":762,"toc":913},[763,766,769,773,779,782,785,788,794,797,801,804,807,810,816,819,825,829,832,838,841,843,852,857,860,867,872,875,882,887,900,904],[122,764,765],{},"Ever want to quickly share feedback? Maybe a fellow dev just wants you to take a look at their app and give some constructive feedback? Or you are working in public and want to share all feedback reported publicly?",[122,767,768],{},"With Bugflow, you can quickly share an entire project's feedback or an individual piece of feedback with the world. Of course, you are in full control.",[137,770,772],{"id":771},"share-entire-projects-feedback","Share Entire Project's Feedback",[122,774,775],{},[150,776],{"alt":777,"src":778},"Share an entire project's feedback","\u002Fimages\u002Fblog\u002Fpublicly-collaborating-on-project-feedback\u002Fshare-project-feedback.png",[122,780,781],{},"With in any project, you can quickly view the feedback page. On the feedback page, click the \"Share\" button in the top right. You will be prompted to publish the page to the web. This shared page will be the listing of your entire project's feedback.",[122,783,784],{},"Anyone with the link will be able to view all feedback on the project and expand the feedback to view comments. However, secure items such as GitHub issue number, integration interactions, etc. will be hidden.",[122,786,787],{},"Once you share the project's feedback, you can apply settings to how long the link should be active. This puts you in full control of how long you want to share the feedback for anyone who has the link.",[122,789,790],{},[150,791],{"alt":792,"src":793},"Publicly shared project","\u002Fimages\u002Fblog\u002Fpublicly-collaborating-on-project-feedback\u002Fpublicly-shared-project.png",[122,795,796],{},"What if you don't want to share everything on the project? We've got you covered.",[137,798,800],{"id":799},"share-one-feedback-item","Share One Feedback Item",[122,802,803],{},"Similar to sharing all feedback items, you can share a single piece of feedback. This will give any user who has the link access to the piece of feedback where they can leave a comment.",[122,805,806],{},"Sharing one piece of feedback is perfect for those scenarios when you want to collaborate in public on an item, collect information and insight, and work on resolving without opening up your entire project.",[122,808,809],{},"To share, simply click on the feedback item you wish to share and the popout will open. On top, click the \"Share\" button, and \"Publish\".",[122,811,812],{},[150,813],{"alt":814,"src":815},"Sharing a single feedback item","\u002Fimages\u002Fblog\u002Fpublicly-collaborating-on-project-feedback\u002Fshare-one-item.png",[122,817,818],{},"You will now have a public link where you can copy and share with your collaborators. Similar to the entire project's feedback, you can set the link expiration time to expire after a certain amount of time.",[122,820,821],{},[150,822],{"alt":823,"src":824},"Share an item for a designated amount of time","\u002Fimages\u002Fblog\u002Fpublicly-collaborating-on-project-feedback\u002Fshare-time.png",[137,826,828],{"id":827},"turning-off-public-sharing","Turning off Public Sharing",[122,830,831],{},"Let's say you want to immediately stop sharing a link. This is as simple as sharing. On both project and individual feedback items, you can click \"Link Settings\" on the blue banner to pop up your link's settings. All you have to do is click \"Unpublish\".",[122,833,834],{},[150,835],{"alt":836,"src":837},"Unpublish shared project or feedback","\u002Fimages\u002Fblog\u002Fpublicly-collaborating-on-project-feedback\u002Funpublishing.png",[122,839,840],{},"Immediately all links will be expired and no one will be able to view the feedback. This makes it a breeze to work collaboratively with users of your application.",[137,842,539],{"id":538},[122,844,845,846,851],{},"So how does link sharing work? To be direct, it's the magic of ",[129,847,850],{"href":848,"rel":849},"https:\u002F\u002Flaravel.com\u002Fdocs\u002F11.x\u002Furls#signed-urls",[133],"Laravel's signed urls"," combined with some database love. Let's take a look.",[122,853,854],{},[687,855,856],{},"Creating a Public URL",[122,858,859],{},"When we actually create a public URL, two things happen. First, we generate a signed URL based on the UUID of the project or the UUID of the project and the feedback. This will create the publicly accessible link.",[122,861,862,863,866],{},"Second, we persist the settings to the database on whether the link is published and how long it's published for. We don't create a temporarily signed URL, we handle the \"temporary signing\" on the database side. So if the setting is to expire in an hour, we set the ",[158,864,865],{},"link_expires_at"," field in the database to be the current time, add an hour. We also flag the project or the feedback as published. This will come into play in the next section.",[122,868,869],{},[687,870,871],{},"Accessing the URL",[122,873,874],{},"When a user who is not authenticated accesses a signed URL, we first check if the URL has a valid signature. This is the Laravel way of approaching signed URLs. If the URL has a valid signature and not altered in any way, we do another check.",[122,876,877,878,881],{},"The next check is if the feedback or project is published. This is important. Since we aren't using temporarily signed URLs, a user could have an indefinitely signed URL which would be valid even after it's expired. By checking the ",[158,879,880],{},"published"," flag, we ensure that the URL is still active with the time frame defined. If both validations are true, the user can access the page!",[122,883,884],{},[687,885,886],{},"Cleaning Up Expired Links",[122,888,889,890,892,893,895,896,899],{},"To tie everything together, we have a scheduled task that is run every minute to ensure that links that have expired are properly terminated. It's fairly simple. If the command finds a project or feedback where the ",[158,891,865],{}," is less than the current time, we set the ",[158,894,880],{}," flag to ",[158,897,898],{},"false"," and prevent public access. Now users even with a valid link will be turned away since the project or feedback is not published.",[137,901,903],{"id":902},"address-feedback-in-record-time","Address Feedback in Record Time",[122,905,906,907,912],{},"Our goal is to enable you to address feedback in record time when using Bugflow. Even if the user is not a part of the Bugflow project. By creating publicly accessible links, you can safely and securely collaborate on feedback in public. Want to give it a try? ",[129,908,911],{"href":909,"rel":910},"https:\u002F\u002Fapp.bugflow.io\u002F",[133],"Start your 15 day free trial"," and let us know what you think! You can report feedback on Bugflow itself from within Bugflow!",{"title":274,"searchDepth":275,"depth":275,"links":914},[915,916,917,918,919],{"id":771,"depth":275,"text":772},{"id":799,"depth":275,"text":800},{"id":827,"depth":275,"text":828},{"id":538,"depth":275,"text":539},{"id":902,"depth":275,"text":903},"2024-05-13",{"src":922},"\u002Fimages\u002Fblog\u002Fpublicly-collaborating-on-project-feedback\u002Fpublic-project-feedback-og.jpg",{},"\u002Fblog\u002Fpublicly-collaborating-on-project-feedback",{"title":756,"description":516},"3.blog\u002Fpublicly-collaborating-on-project-feedback","gVY0bbmptvylJ6Dg2w0SJaOOfen19I48n7NQ_58g_r8",{"id":929,"title":930,"authors":931,"badge":934,"body":936,"date":1015,"description":1016,"extension":284,"image":1017,"meta":1019,"navigation":288,"path":1020,"seo":1021,"stem":1022,"__hash__":1023},"posts\u002F3.blog\u002Fquickest-bug-reporting-tool-for-agencies.md","Quickest Bug Reporting Tool for Agencies",[932],{"name":112,"to":113,"avatar":933},{"src":115},{"label":935},"Agency Work",{"type":119,"value":937,"toc":1006},[938,941,945,948,957,962,965,969,972,978,981,985,988,992,995],[122,939,940],{},"In any agency, customer\u002Fclient feedback is essential. Whether it's a bug report, feature request, or just general feedback, it's important to have a system in place to collect this information. Once that information is collected, it's just as important to get it to the person it needs to go to. Our goal with Bugflow is to make this process as quick and easy as possible.",[137,942,944],{"id":943},"built-for-agencies","Built for Agencies",[122,946,947],{},"We've run a profitable bootstrapped web development agency since 2011. Working on hundreds of projects, many simultaneously, with a variety of different clients, we needed a tool that allowed us to quickly collect visual feedback and get it to the right person, all while staying on top of multiple projects at the same time. This process needs to be quick, easy, and provide all the information necessary to handle the feedback. Bugflow routes feedback to the right person and the right project, all while providing the necessary information to solve the issue.",[122,949,950,951,956],{},"In our agency, ",[129,952,955],{"href":953,"rel":954},"https:\u002F\u002F521dimensions.com",[133],"521 Dimensions",", we've been using Bugflow for awhile, designing it for an agency workflow. Our feedback turn around time has dramatically improved. Here's a quick overview on how we use Bugflow in our agency.",[958,959,961],"h3",{"id":960},"quality-assurance","Quality Assurance",[122,963,964],{},"In our team, it's just Jay and I. During our QA rounds, Jay thoroughly tests our application from a project manager perspective. He reports any bugs or feedback on features that aren't functioning correctly, look weird, or aren't up to our standards through Bugflow. Those bug reports come to me, the developer.",[958,966,968],{"id":967},"developer-workflow","Developer Workflow",[122,970,971],{},"Once I receive the bug report, I need to be able to quickly reproduce the issue, fix it, and deploy it. The quicker I can do this, the better. This is where Bugflow comes in. All feedback Jay reports comes with a screenshot, a description, URL, statuses, and relavant browser information.",[122,973,974],{},[150,975],{"alt":976,"src":977},"GitHub Bugflow Report","\u002Fimages\u002Fblog\u002Fquickest-bug-reporting-tool-for-agencies\u002Fexample-github-feedback.png",[122,979,980],{},"Not only do I get a report, I get an open issue in the current repository where the code is hosted. This allows me to quickly reproduce the issue, fix it, and deploy it, all while staying focused and using the power of the repository to manage the issues.",[958,982,984],{"id":983},"customer-and-client-feedback","Customer and Client Feedback",[122,986,987],{},"We also use Bugflow to collect feedback from our customers and clients. Once we release our app to the client for their review, we invite them to Bugflow. They can review and test our application, reporting bugs and feedback as they go. These feedback reports go directly to Jay, the project manager, so he can communicate what needs to be adjusted, fixed, and tweaked. Jay then quickly assigns the bug to me with all the communication and feedback reported from Bugflow and I can quickly fix the issue.",[137,989,991],{"id":990},"built-to-scale","Built to Scale",[122,993,994],{},"Sometimes we work on a development project by ourselves, sometimes we are a part of a larger team with multiple layers of QA, marketing, and a lot of devs. Bugflow is built to scale with your team. Allowing users to be a part of multiple projects, have a variety of different bug and feedback reporters and allowing each one to assign issues to different team members. Whether you are a small agency or a large enterprise, Bugflow can assist in getting your feedback handled and resolved as quickly as possible.",[122,996,997,998,1002,1003,1005],{},"Check out our ",[129,999,1001],{"href":1000},"\u002Fpricing","pricing page"," to see what plan works best for you and your team. If you have any questions, feel free to reach out to us at ",[129,1004,271],{"href":270},". We'd love to assist your agency collect feedback and solve bugs as quickly as possible!",{"title":274,"searchDepth":275,"depth":275,"links":1007},[1008,1014],{"id":943,"depth":275,"text":944,"children":1009},[1010,1012,1013],{"id":960,"depth":1011,"text":961},3,{"id":967,"depth":1011,"text":968},{"id":983,"depth":1011,"text":984},{"id":990,"depth":275,"text":991},"2023-09-02","Reporting feedback to devs should be quick, easy, and provide all the information necessary to solve the issue. We strive to make Bugflow the quickest bug reporting tool available.",{"src":1018},"\u002Fimages\u002Fblog\u002Fquickest-bug-reporting-tool-for-agencies\u002Fteam-featured-image.jpg",{},"\u002Fblog\u002Fquickest-bug-reporting-tool-for-agencies",{"title":930,"description":1016},"3.blog\u002Fquickest-bug-reporting-tool-for-agencies","KyOmIuTist2dTN6Sn5OkGEG0RonHirf8JsGaUcFOK0c",{"id":1025,"title":1026,"authors":1027,"badge":1030,"body":1032,"date":1072,"description":1073,"extension":284,"image":1074,"meta":1076,"navigation":288,"path":1077,"seo":1078,"stem":1079,"__hash__":1080},"posts\u002F3.blog\u002Fusing-bugflow-ultimate-build-in-public-tool.md","Using Bugflow as the Ultimate \"Build-in-Public\" tool",[1028],{"name":112,"to":113,"avatar":1029},{"src":115},{"label":1031},"Build in Public",{"type":119,"value":1033,"toc":1067},[1034,1037,1041,1044,1048,1057,1061,1064],[122,1035,1036],{},"Building in public is hard. Not only do you have to make a quality product, you have to share updates, engage a community, handle customer feedback, squash bugs, and deal with feature requests. It's a lot. Using Bugflow can help.",[137,1038,1040],{"id":1039},"invite-feedback-from-your-users","Invite Feedback From Your Users",[122,1042,1043],{},"If your project is behind closed doors or open to users that aren't technically savvy, it's hard to collect feedback and fix bugs. When using Bugflow, you can open a portal for all users to submit product feedback. Anyone using your product can submit feedback with all the information necessary to enable devs to quickly provide a solution resulting in better customer retention and happiness. From there, you can share your progress and journey with your audience, helping to promote your product.",[137,1045,1047],{"id":1046},"open-source-even-better","Open Source? Even Better",[122,1049,1050,1051,1056],{},"Bugflow supports GitHub out of the box. According to the ",[129,1052,1055],{"href":1053,"rel":1054},"https:\u002F\u002Foctoverse.github.com\u002F",[133],"state of open source software"," there are over 94 million developers on GitHub. That's a lot of potential eyes, and a lot of potential help. When a user submits an issue through Bugflow, it automatically gets synced to the repo. That means images, feedback, description, etc. From there, you can communicate with a fellow GitHub user or guest through Bugflow, showing your progress, thoughts and ideas to help your product gain traction and become as stable as possible.",[137,1058,1060],{"id":1059},"bringing-feedback-close-to-the-codebase","Bringing Feedback Close to The Codebase",[122,1062,1063],{},"By bringing customer feedback right into the repo, devs can use the tools they are already familiar with to squash bugs and respond to customers. When building in public this is important. It shows transparency, speed of response, and attention to what the customer wants. As a matter of fact, we use Bugflow to build Bugflow. If you are using the app, feel free to submit your own feedback and we will address and fix it as soon as possible.",[122,1065,1066],{},"We are wrapping up our 1.1 release which directly relates to building in public. It allows you and a guest to comment back and forth on an issue with ease, using Bugflow as the medium of communication. They don't even need an account! We can't wait to launch this new feature and look forward to hearing your feedback.",{"title":274,"searchDepth":275,"depth":275,"links":1068},[1069,1070,1071],{"id":1039,"depth":275,"text":1040},{"id":1046,"depth":275,"text":1047},{"id":1059,"depth":275,"text":1060},"2023-09-14","Building in public is hard. Bugflow can help.",{"src":1075},"\u002Fimages\u002Fblog\u002Fultimate-build-in-public-tool\u002Fdrawing-featured-image.jpg",{},"\u002Fblog\u002Fusing-bugflow-ultimate-build-in-public-tool",{"title":1026,"description":1073},"3.blog\u002Fusing-bugflow-ultimate-build-in-public-tool","b1M8mwBQO0YtYax2IsemVVr4DfXl5fSZn34506gCS60",{"id":1082,"title":1083,"authors":1084,"badge":1090,"body":1092,"date":1210,"description":1211,"extension":284,"image":1212,"meta":1213,"navigation":288,"path":1214,"seo":1215,"stem":1216,"__hash__":1217},"posts\u002F3.blog\u002Fwhy-we-re-building-bugflow.md","Why we're building Bugflow",[1085],{"name":1086,"to":1087,"avatar":1088},"Jay Rogers","https:\u002F\u002Fx.com\u002Fshortjay",{"src":1089},"\u002Fimages\u002Favatars\u002Fjay-rogers.jpeg",{"label":1091},"Maker Stories",{"type":119,"value":1093,"toc":1208},[1094,1097,1100,1103,1106,1112,1117,1122,1133,1141,1144,1147,1150,1154,1157,1160,1163,1166,1169,1172,1175,1179,1182,1185,1199,1202,1205],[122,1095,1096],{},"Building a SaaS product is tough. We all live in a world of instant social mediums that only showcase the successes of people. In reality, these intangible hearts and retweets will never quantify the actual effort of building a successful software product.",[122,1098,1099],{},"Everything is always 10 times harder than you think it will be and the true rewards aren't until you're much further along on the journey.",[122,1101,1102],{},"I know I'm preaching to the choir. For most of us, the product we're currently working on today isn't our first attempt. We all know what that burnout feels like.",[122,1104,1105],{},"The sooner you can get feedback and the less time you spend in \"bug fix hell\", the happier you'll be to keep working on your product.",[122,1107,1108,1111],{},[687,1109,1110],{},"This is exactly why we built Bugflow."," Bugflow automatically collects detailed visual feedback so you can quickly understand how you should improve your product.",[122,1113,1114],{},[150,1115],{"alt":274,"src":1116},"\u002Fimages\u002Fblog\u002Fwhy-we-re-building-bugflow\u002FWhyWereBuildingBugflow-FeaturedImage.jpeg",[1118,1119,1121],"h1",{"id":1120},"hi-were-dan-jay","Hi, we're Dan & Jay",[122,1123,1124,1125,1129,1130,165],{},"My name is ",[129,1126,1086],{"href":1127,"rel":1128},"https:\u002F\u002Ftwitter.com\u002Fjaydrogers",[133],", and I have the great pleasure of working with ",[129,1131,112],{"href":393,"rel":1132},[133],[122,1134,1135,1136,1140],{},"Dan and I met as random college roommates in 2010 and started ",[129,1137,955],{"href":1138,"rel":1139},"https:\u002F\u002F521dimensions.com\u002F",[133]," (a software consulting agency) in 2011.",[122,1142,1143],{},"Throughout our entire 10+ years at 521 Dimensions, we've stayed as a two person team building digital products that serve hundreds of thousands of users.",[122,1145,1146],{},"We've used the constraints of our small team to make our processes more creative.",[122,1148,1149],{},"Bugflow is everything we learned about efficient software development -- all combined into one product.",[1118,1151,1153],{"id":1152},"bugflow-isnt-your-average-saas-product","Bugflow isn't your average SaaS Product",[122,1155,1156],{},"Everything you see in Bugflow is completely organic.",[122,1158,1159],{},"This means we do not have features that some CFO picked because it \"has margins\" or \"seems like the cool thing to do\".",[122,1161,1162],{},"Every feature you see in Bugflow is designed around keeping your team small and moving fast as possible.",[122,1164,1165],{},"We understand what you need because we continue to use this product everyday on our other products.",[122,1167,1168],{},"Bugflow is our secret recipe that allows Dan and I to stay as a two person team, all while building Bugflow, writing a book, and working on other projects.",[122,1170,1171],{},"As we continue to use Bugflow everyday, we only come up with more ideas. Dan and I are passionate about open source development. We have some Bugflow features on the books that will help open source developers that's never been done before.",[122,1173,1174],{},"We're continuously improving Bugflow to make the development lifecycle easier for everyone.",[1118,1176,1178],{"id":1177},"where-bugflow-is-heading-from-here","Where Bugflow is heading from here",[122,1180,1181],{},"We've recently started working on Bugflow, but what we have so far is very polished. We've been using Bugflow internally for several months and our productivity has sky-rocketed.",[122,1183,1184],{},"Since we started using Bugflow:",[646,1186,1187,1190,1193,1196],{},[649,1188,1189],{},"Our productivity has increased dramatically",[649,1191,1192],{},"We no longer spend time copying and pasting things from one product to another (everything is centralized in GitLab for us)",[649,1194,1195],{},"Feedback items are much easier to convert to actionable bug fix items",[649,1197,1198],{},"The ability to reference original bug reports in pull requests is amazing",[122,1200,1201],{},"Right now we're focusing on polishing up our proof of concept even more and making sure our on-boarding experience is very smooth and easy to get started.",[122,1203,1204],{},"We're stoked to get our first group of users on in Summer of 2022.",[122,1206,1207],{},"Follow along as we're constantly shipping updates and will have our first batch of invites going out soon.",{"title":274,"searchDepth":275,"depth":275,"links":1209},[],"2022-06-03","Bugflow is our secret ingredient that allows our 2-person, bootstrapped team to build apps that serves hundreds of thousands of users efficiently. We know the challenges of getting things done with a small team because we've been doing it for the last 10+ years.",{"src":1116},{},"\u002Fblog\u002Fwhy-we-re-building-bugflow",{"title":1083,"description":1211},"3.blog\u002Fwhy-we-re-building-bugflow","aBCPSiwsMYokhUf0jKorbflcAl8Kz3Cijjl9TCfdcgY",1779889228684]