bjorndcode / serve Goto Github PK
View Code? Open in Web Editor NEWQuickly spin up local environments
Quickly spin up local environments
There should be a screen where you can view the application log
Currently the contents of docker-compose.yml
is overriden each time a change is made to the project settings. This is a problem is people make custom edits to the file. A solution is to expose all project settings as environment variables and reference those in docker-compose.yml
Currently the app requires a lot of disk space.
Currently the quick action buttons allows you to open apps like Sublime, GitHub Desktop, a database manager etc.
But there are no checks for whether these apps exist. At the very least an error message should be shown if the app doesn't exist.
In project settings it should automatically update the value of the database version field when the database type is changed. It works correctly on the create page.
Example: If I change from mysql to postgress in the project settings it doesn't update docker-compose.yml
with the changes after saving the settings.
There are a few things that can be improved under the Quick Actions
section:
Open in database explorer
button (Research if it can default to SequelPro or Tableplus)Open in browser
and Open in finder
buttons. (These can already be opened from the table)Open in terminal
buttonCurrently the only way to run commands inside the containers is with docker run
and docker exec
.
There should be another way to do it easier. It could be a global cli tool that can be installed from inside the app (ala VSCode & Sublime) or it could be a simple serve.sh
file that is added to the project.
Some inspiration can be found in Vessels vessel
file: https://github.com/shipping-docker/vessel/blob/master/docker-files/vessel
serve composer require laravel/jetstream
serve npm install
There are currently a few issues when creating a project.
predis/presis
with composer.env
fileThese are the following keys that needs updating in .env
:
DB_HOST=db
DB_PASSWORD=root
CACHE_DRIVER=redis
SESSION_DRIVER=redis
REDIS_CLIENT=predis
REDIS_HOST=cache
If you are using postgres instead of MySQL the following keys need to be updated as well:
DB_CONNECTION=pgsql
DB_PORT=5432
An important part of managing local environments is being able to handle static assets. For Laravel I want to add support for running NPM scripts but I also want a tighter integration with Laravel Mix. This means I want to add buttons for watching assets, building dev assets once and building production assets.
There should be a better error message when there isn't a .env file
Currently release builds are created manually on my machine and attached to a GitHub release. I would like to automate in a CI environment.
The main reason Serve currently only supports macOS is the way commands and processes are run. I would like to find a way to do this in a cross-platform way. A library like shelljs looks promising but it can't run exec
in Electron apps. This is a huge issue as we would be limited to run what shelljs has implemented as first-class functions.
After doing a bit of research I see 3 possible solutions:
shelljs
through a custom node docker container (Slow?)bash
through a custom node docker container (Slow?)node
as a dependency to the project and point shelljs' execPath to that node binaryIt could be nice to be able to run serve logs
inside a project to see the Docker log
When importing an existing Laravel project you need to manually update the .env file to point to the correct db, host etc.
Currently this information isn't shown anywhere
When opening the application on macOS Big Sur, a system popup appears "You don't have permission to open the app Serve".
When trying to open using terminal: (with or without sudo)
The application cannot be opened for an unexpected reason, error=Error Domain=NSOSStatusErrorDomain Code=-10826 "kLSNoLaunchPermissionErr: User doesn't have permission to launch the app (managed networks)" UserInfo={_LSFunction=_LSLaunchWithRunningboard, _LSLine=2508, NSUnderlyingError=0x7fbf704086e0 {Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7fbf70409e10 {Error Domain=NSPOSIXErrorDomain Code=111 "Unknown error: 111" UserInfo={NSLocalizedDescription=Launchd job spawn failed with error: 111}}}}}
Currently it's possible to install PHP extensions yourself but it's too complicated to do manually.
The current steps require you to do the following:
docker
folder in the project rootDockerfile
inside the docker
folder with the following contents:FROM bjornlindholm/laravel:7.4
RUN apt-get update
RUN apt-get install -y php7.4-gmp
CMD ["supervisord"]
Where php7.4-gmp
is the name of the extensions to install.
3. Update docker-compose.yml
Replace
services:
app:
image: bjornlindholm/laravel:7.4
With:
services:
app:
build:
context: ./docker
Instead I would like to specify extensions in the serve.toml
file and create a UI for it as well
Currently you still have to run queue jobs through the terminal. I want to add actions for that in Serve.
Add a command palette with commands for all common actions.
This will require to extract actions in to single methods. This will also make it possible to add more keyboard shortcuts
When a project has the status 'creating' it shouldn't tried to read the config file since it doesn't exist before the project has been created
Currently Serve updates automatically without notifying the user. The problem is that it restarts so it can be a jarring experience. The user should be notified and asked if they are ready to install updates
There should be a better error message when there isn't a .env file
Currently projects are listed in descending order of creation. It would make sense to order them by the last time a project was started.
There should be menu item options for creating and importing projects.
Currently the command palette uses a simple string comparison to search for commands. An added benefit to fuzzy search is that results will also be sorted by relevance instead of the order they are defined in.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.