* Add script and records for deploying frontend app
* Update readme with steps for new deployment
* Add troubleshooting section
* Move config env update
* Add step to commit updated records
* Bump record version
* 🎨 style: adjust z index of the date picker popover
* 🎨 style: add new spacing and rename box shadow from calendar to dropdown
* 🐛 fix: console error becasue button inside button
* ♻️ refactor: rename shadow calendar to shador dropdown on calendar component
* 🚀 perf: remove vscode settings inside `packages/frontend`
* ⚡️ feat: create check radio icon and chevron down icon component
* 🔧 chore: install `downshift`
* ⚡️ feat: create select component
* 🎨 style: adjust the popover position based on the user screen
* ⚡️ feat: separate select item to be a component
* ⚡️ feat: separate select value to be a component
* ♻️ refactor: adjust style and refactor to a new component
* ⚡️ feat: create a type for merge two interface but keep the last value
* 🐛 fix: forward ref the component to fix console error
* ⚡️ feat: add `hideValues` prop to hide the values when on multiple
* 🐛 fix: no result not showing
* ⚡️ feat: make the select to be controller component
* ♻️ refactor: remove console log
* ♻️ refactor: update pr review
* Fix format of eth address to display
* Set authority for record name from backend config
* Add functionality to open repo button
* Use commit author image and commit url in activity card
* Handle review changes
* Fix commit author as null
* Add timeout to move to next page on project creation
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* ⚡️ feat: create calendar icon for date picker
* ⚡️ feat: create date picker component
* 📝 docs: add date picker to the example page
* 🔧 chore: install `@radix-ui/react-popover`
* Create web3 modal provider with SIWE
* Add auth router to handle SIWE authentication
* Use axios instance to make request
* Add button for SIWE authentication
* Add changes to access session in web-app GQL requests
* Add auth check in GQL context and load/create user
* Use authenticated user from context
* Redirect to sign in page if unauthenticated and logout button
* Change sign-in route to login
* Get project domain from config file
* Set user ethAddress column as unique
* Use formatted user name
* Get session secret and origin url from config file
* Add unique constraint for eth address
* Get secure and samesite from origin url
* Get wallet connect id and backend url from env file
* Format user email in member tab panel
* Add backend config isProduction to set trust proxy
* Use only one server url config
* Add tool tip for displaying email
* Add trustProxy and domain in server.session config
* Add SERVER_GQL_PATH constant in frontend
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* 🎨 style: make the cursor of the tab trigger wrapper to default
* ⚡️ feat: create radio component
* 📝 docs: add radio component to the example page
* 🔧 chore: install `@radix-ui/react-radio-group`
* Fix alignment of deployment status chip
* Use template name from env
* Use env for git template link
* Add loading spinner for create project
* Display user name
* Format the displayed user name
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Create application deployment request on new deployment
* Save application deployment request datas in deployment entity
* Add project as dependency
* Use project repo name as record app name
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* ⚡️ feat: create info square icon component
* ⚡️ feat: create inline notification component
* 📝 docs: add js doc comment and add inline notification component to the example page
* 🐛 fix: use the right method of `useCallback
* Populate organization and user if db is empty
* Use hardcoded user id from fixtures
* Implement polling for get deployments query
* Handle review changes
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add method to update multiple deployments in single query
* Fix deployments URL visit and date filter
* Clean fixtures data
* Update fixtures data
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Use branches from GitHub API
* Disable git branch input if repo not found
* Disable git branch if branches is empty
* Use async select for accounts dropdown
* Log actual HTTP error in console
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add skeleton and TODOs for polling deployment records
* Add method implementations for fetching deployment records
* Handle if deployment url is not set
* Add logs after getting ApplicationDeploymentRecord
* Add application deployment record to deployment entity
* Change type of application deployment record data
* Fetch delay to check deployment records from config
* Update isCurrent after deployment record received
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Create repo webhook and express handler for webhook
* Create deployments from commits in GitHub
* Update isCurrent in previous production deployment
* Create script for setting authority
* Update README for initialize registry script
* Handle review changes
* Use correct repo URL in record data
* Handle github unique webhook error
* Handle async execution of publishing records
* Update readme with ngrok setup
* Review changes
* Add logs for GitHub webhooks
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Handle request error while fetching Git activity
* Use default Octokit instance if auth token is not available
* Rename input arguments of mutation methods to data
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Display commit message in projects and deployments
* Handle if current deployment not present
* Rename types file
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Use Namespace import instead of named import
* Fix route for add domain
* Fix settings tab routes on changing sub path
* Fix stepper for add domain and project
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Get latest commit hash from repo when adding project
* Update UI/UX
* Fill registry record with data from package.json
* Add package json type
* Correct record data based on laconic console
* Update README
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add routes to settings tab panel
* Refactor code to move settings tab components to pages
* Rename registry fields in project and deployment entity
* Use kebab case for routes
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add routes to project tabs
* remove react tabs and use material tailwind component instead
* Refactor code to move project tab panels in pages directory
* Remove unused function from database class
* Refactor routes for project tabs
* Publish record in laconic registry on creating project and deployment
* Refactor publish record method
* Set name for the published record
* Publish application deployment request
* Add README for publishing record
* Add await in add project resolver method
* Update meta data for deployment request record
* Remove title field from deployment entity
* Refactor service and registry class for publishing record
* Add record data to project and deployment entity
* Set record id and data as nullable in project entity
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Create new deployment when changing to production
* Remove unnecessary todos
* Move deployment id and url creation in database method
* Display correct details in deployment dialog box
* Rename relativeTime function to relativeTimeISO
* Refactor resolver methods to service class
* Refactor to move github app to service class
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Create repository from selected template
* Create project based on created repository
* Replace dropdown component with component from material tailwind
* Remove repository name from query parameters
* Implement dropdown for organizations switcher
* Add dynamic route for organization id
* Update routes for organization slug
* Use organization slug for adding project
* Refactor to fetch organizations at sidebar component
* Update organization switcher based on searched project
* Refactor types in frontend
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Implement functionality to visit deployment
* Check and display domain details in overview tab for production branch
* Update fixtures to remove project name from deployment url
* Refactor and add uuid to typeorm entities
* Fix deployment url
* Display live domain details in project overview
* Use database query to fetch live production domain
* Remove unused methods from backend utils
* Set project name from repo organization and name when creating project
* Rename success and project components according to routes
* Display URL for change to production dialog box
* Refactor database method for domains to service class
* Handle error in resolver instead of service class
* Return entity from service class for add operation
* Do not fetch branches if repo not available
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Change create new project ui for git authentication
* Use submit handler method from react hook form
* Handle review changes
* Have a pre-selected value for connect account tab panel
* Refactor mutation methods to service class
* Refactor database methods to service class
* Display organization name in sidebar
* Handle review comments
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Display current deployment info in overview tab
* Add assign domain dialog box in deployments
* Add empty link for project settings in assign domain dialog box
* Use react router dom link
* Add sub domain to project entity
* Add deployment url with custom generated string
* Set nano id to deployment id
* Add sub domain while creating new project
* Use same id as in url
* Update readme steps for production build
* Update README
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add Service class and use in GQL resolver
* Refactor resolver query methods to service class
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add GQL mutation for transfer project
* Integrate transfer project GQL client method
* Use update project GQL method for transfer project
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add mutation for adding project member
* Add GQL client method for add project member
* Handle review comments
* Integrate add project member GQL client method
* Handle cascades for project members and user organizations
* Add null type to user.name and domain.redirectTo
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Make use of domain id for redirecting domains
* Add checks in backend to prevent chain redirecting and editing redirected domain
* Add self relation to domain entity and use it to create and edit domains
* Add self referencing relation to initialize db script
* Add redirectToId column in domain entity
* Remove isRedirected flag from domain entity
* Refactor edit domain dialog box
* Use dummy data for repository
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add mutation to update permissions of project member
* Use update project member permission client method in UI
* Handle review changes
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Use react-oauth-popup for github authentication popup
* Fetch auth token and use in app to fetch list of repositories
* Get client id and secret from config
* Use GitHub search API for fetching repos
* Use debounce for searching repos and projects
* Change environment field to enum instead of array
* Update gql client for get environment variables query
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Refactor to remove use of organization project
* Remove organization project from member tab panel
* Handle review changes
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add and use createdBy field in deployment entity
* Use updated get deployments client method in UI
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Use rollback deployment client in UI
* Check if deployements domain is undefined
* Fix typo
* Rename variable to current deployment
* Handle deployment domain relation on rollback
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Pass data for all domains in edit domain dialog box
* Add mutation to update domain by id
* implement front end and gql client method to edit domain
* Rename arguments of resolver function to update domain and project
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add mutation to create new domain
* Update mutation to create two domains for www and non-www variant
* Add gql-client method and frontend to create domain
* Display fetched domains in domains tab panel using project id
* Fix graphql type for fetching domains
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Show project owner in member tab panel
* Implement mutation for rollback deployment
* Fix project members count
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Implement delete project functionality
* Use delete project client method in UI
* Refetch projects information on deleting project
* Use project's current deployment domain name for url
* Handle review changes
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Fix deployment creation time and hard coded title
* Add delete database script
* Use database file path from config file
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add graphql mutation to redeploy deployment to production
* Implement frontend to redeploy deployment to production
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Use update project gql client method in UI
* Handle save project button based on form change
* Fix import order
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add mutation to update deployment to production
* Implement gql client mutation and frontend to update deployment to production
* Add toast message when deployment is changed to production
* Throw error from init db script if db aleardy exists
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Find projects based on search text
* Use get search projects client method in UI
* Fetch searched projects inside useCombobox hook
* Get searched project from project entity
* Remove non required search projects filtering
* Fetch projects if user is owner or project member
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add mutation to add environment variables by project id
* Add checks while removing project members
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add mutation to remove project member by member id
* Add query to fetch project members by project id
* Handle review changes
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Create fixture data for remaining entities and load it in db
* Rename currProject to currentProject in frontend package
* Handle review changes
* Update readme for loading fixtures
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add fixture data and populate database with it
* Use node to run commands in package scripts
* Move test directory out of src directory
* Save projects with user and organization relation
* Refactor and add generalized function to load data
* Populate userOrganization entity with test data
* Change project id type from number to string
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Update root readme and setup depcheck
* Use fetched domain data in edit domain dialog box
* Use fetched project data in general tab
* Rename files in gql-client package
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Use fetched domains data and use it in domains page
* Add record field to fetched domain data
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Refactor to fetch organization details in the parent component
* Fetch and use deployment details for a project
* Remove deployment field from ProjectDetails type
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add resolver function for fetching all deployments for a project
* Fetch project members while fetching organization data
* Map db project member and deployment entity to graphql type
* Fetch environment variables data while fetching organizations
* Add domain field in deployment
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Integrate gql-client in frontend app
* Populate home page information using gql-client
* Remove non required fields from organizations query
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add resolver method for getting organizations
* Fetch project data along with organizations from db
* Refactor code to map db project entity to graphql type
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Setup backend package with express server (#11)
* Setup backend package with express server
* Rename ts.config.json to tsconfig.json
* Update lint setup in backend package
* Add a dummy typeorm entity
* Remove dummy entity
---------
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
* Setup database connection (#13)
* Setup database connection
* Refactor database initialization into separate function
* Rename index.ts to server.ts
* Use debug package for logging
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Create entities for ER models (#14)
* Add entity for domain
* Add entity for environment variable
* Add entity for project
* Add entity for deployment
* git ignore db directory
* Add entity for organization
* Add entity for user organization and project member
* Add foreign key user and organization to project
---------
Co-authored-by: neerajvijay1997 <111040298+neerajvijay1997@users.noreply.github.com>
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Implement add member dialog
* Fix typo
* Display the added pending member
* Seperate form submit handler for add member dialog
* Enable production branch input on repo connected
* Refactor project to include members permissions
* Refactor add member handler
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add layout for members panel
* Get members detail from projects json
* Add members to all project
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Display error if fields are empty
* Show number of added variables in toast
* Show horizontal line between different environments
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add layout to implement addition of new domains
* Handle review changes
* Move AddDomain component to pages directory
* Use useLocation for pathname
* Use relative paths to navigate between pages
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Implement functionality to add environment variables
* Use field array hook to handle variables form
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Implement layout for Domains tab in settings
* Handle review changes
* Add json file for domains and take values from it
* Handle review changes
* Rename DomainsCard to DomainCard
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add dialogs for deployment menu items
* Populate deployment dialogs with dummy json
* Pass production deployment as prop to deployment card
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add dialogs for transfer and delete project
* Refactor confirm dialog
* Handle form state of transfer and delete dialog
* Handle default value of transfer dropdown
* Add space in delete dialog body
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add chip for showing deployment status
* Add chip to display projects count
* Display label if project search is not matching
* Add chip to display domain is not connected
* Fix text size in chips for deployment domain
* Add chip to display if repository is private
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Filter repositories according to title
* Add style to project repo card
* Filter repositories through title and user
* Update project repository card for user
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Use collapse to display process logs
* Implement functionality to copy log button
* Implement functionality to copy project id
* Add toast for successful copy
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Implement tab functionality for settings pannel
* Use material ui input component
* Handle form state of general panel
* Organize project components
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Implement search functionality with downshift
* Show project details in suggestions and handle selection
* Rename component to ProjectSearch
* Use renamed component
* Create layout for create project with template
* Handle create project with tempalte form
* Refactor pages folder according to routes
* Add navigation to create project with template page
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>