Need advice about which tool to choose?Ask the StackShare community!
Laravel vs Symfony: What are the differences?
What is Laravel? A PHP Framework For Web Artisans. Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable, creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as authentication, routing, sessions, and caching.
What is Symfony? A PHP full-stack web framework. Symfony is written with speed and flexibility in mind. It allows developers to build better and easy to maintain websites with PHP. Symfony can be used to develop all kind of websites, from your personal blog to high traffic ones like Dailymotion or Yahoo! Answers.
Laravel and Symfony belong to "Frameworks (Full Stack)" category of the tech stack.
"Clean architecture", "Growing community" and "Composer friendly" are the key factors why developers consider Laravel; whereas "Open source", "Php" and "Community" are the primary reasons why Symfony is favored.
Laravel and Symfony are both open source tools. Laravel with 53.4K GitHub stars and 16.4K forks on GitHub appears to be more popular than Symfony with 21.1K GitHub stars and 7.01K GitHub forks.
According to the StackShare community, Laravel has a broader approval, being mentioned in 831 company stacks & 773 developers stacks; compared to Symfony, which is listed in 374 company stacks and 277 developer stacks.
Hi everyone! I'm starting a personal project that I've been postponing for a little while and I need a bit of advice. I thought that it will be a bit of a challenge but I figure the best way to learn is by doing!
The plan is to build an app with loads of automation build in for reporting which would make it very easy to perform tasks, The plan is to build something similar to an HR app using microservice architecture, separating services e.g. employee data, payroll (including calculations based on easily entered info like tax %), employee services (vacation, sick day allowance booking and tabulation) and automated reporting on a pre-defined schedule (bi-weekly, monthly).
I am considering Django (as I currently know a bit of Python) and Symfony (as a friend who is a developer recommended it) but I am well aware there are other (and probably better) tools out there for the job (like maybe ExpressJS/Node.js for the backend and React/Vue.js for the front).
I have got knowledge as a DevOps, Site Reliability and Cloud engineer so once the app is built I'm very comfortable taking it to deployment.
Thank you all for your help and responses.
Hi. I guess it all depends on what your goal is. If you wanna make fast prototyping Django or ExpressJNodeJS might be really good candidates. You can write your services quickly and easily by using anyone of them. Maybe we can also put Laravel in the same category.
Symfony is also another application framework that comes with many reusable components. It provides great flexibility with the configuration and dependency management solutions. So that you can inject or override anything, anytime without doing something hack-ish. You don't have to depend on any components that come with the framework and, replace them with whatever you prefer unless encounter any integration issues. I can say that Laravel also provides most of the Symfony futures as it uses its components under the hood. However, my personal experience with Laravel was not so good because it made me feel like I use a modernized version of Codeigniter. But anyway. :) So if I have to choose one of them, I would choose Symfony.
From the backend perspective, all of those have some pros and cons. For example, If strict type declaration is important for you and you don't like code magics like monkey patching etc., maybe Python and NodeJS might not be good candidates and maybe you could choose Symfony/php. However, in this case, you'll be missed out on the most powerful future of NodeJS which is non-blocking io. if you plan to do IO-intensive works, I think it would be a big loss.
So, maybe I can recommend you to have a look at typescript + NestJS also. https://nestjs.com/ The futures that NestJS provides might be a good balance between the strengths of Symfony and NodeJS.
As I'm backend dev., I haven't work too many frontend projects but from my personal experience, I loved ReactJS more than Vue although Vue was simpler. Maybe a front-end developer can give us more helpful details about those.
Hope it helps.
I am wondering which language would you guys suggest learning if productivity & "future-proofing" is the focus?
I have now 2 years of experience with React Native & Firebase and 3 years of experience with Next.js and ExpressJS. As I like the idea of separating backend & frontend I think as a solo developer the MVC approach will get you way further and overall I started second guessing the whole js ecosystem and its quality.
What I am currently considering the most is Django, even if I am giving up major productivity I think the opportunities Python offers with AI/ML & scrapping are way superior then Rails. I would like to know how much productivity would get lost by deciding on Django.
Python is simple to read. Easy to use and import libraries. It is widely used in many different application domains. It is very easy to learn compared to other languages.
Considering your background is in front end technology; why not try some other language that can help you become more well rounded? Besides, there are always more and more python jobs.
Django is very easy to learn. If you use Django, I recommend the Django-Rest-Framework. This will save you a lot of time. But you need to understand some Python first. I think Python is as simple as: interpreted, dynamically typed language where you use lists and dictionaries a lot.
What should be used Node.js or Laravel to create a course search portal having about 50K courses, where users will create a profile and enter their academic credentials, scores, language tests, fee range, subject area, etc, and the system will filter and suggest courses meeting the entry requirements and other criteria. The applicant will then shortlist courses, he should be able to compare courses, apply for courses, upload documents and fill in application details, etc.
It's not a fair comparison. Laravel is a PHP web framework, Node is a web server runtime around JS. The question should be either:
- PHP or Node? => take what you know/can work fast in
- Laravel or ExpressJS/MeteorJS => take what you know/can work fast in
If it were up to me, I'd choose Laravel because I know it and can work fast in it :-)
I need advice. Am currently building a real estate marketplace mobile app using Flutter for frontend. I am not sure which backend solution to use, and thinking of using Firebase, Django or Laravel for backend and MongoDB/MariaDB for the database. I want to build an API backend and then use RESTful API calls for the frontend.
I think you should first choose either a database or server side programming language then you can streamline your other choices based on that, but I think if you are building a big project then going with django + firebase / mongodb would be a good choice else choose laravel + firebase.
If it was me, then I would go with node.js because it has huge a number of packages,community,support & good dev experience and learning curve is also not that steep, if coupled with express.js, its gonna be efficient and fast in serving web requests, and if we adopt good design patterns and follow best practices, I guess it will be easy to maintain it as well, and for storing resumes, video rec etc.., I would use assest management tools like cloudinary etc.., rather than storing in db, coz Its gonna be much more faster this way.
Nuxt + Fastify + GraphQL + Nginx + Memcache = fast, confortable and a lot of plug-ins. Apache is realy slow :(. Nuxt is great and easy to use. Nginx, Memcache and Fastify it's very efficient. GraphQL require much more from You then REST, but give You flaxibility, order, plugin etc. We tried and don't regret .
Hi all. I want to rewrite my system. I was a complete newbie 4 years ago and have developed a comprehensive business / finance web application that has been running successfully for 3 years (I am a business person and not a developer primarily although it seems I have become a developer). Front-end is written in native PHP (no framework) and jQuery with backend and where many processes run in MySQL. Hosted on Linux and also sends emails with attachments etc. The system logic is great and the business has grown and the system is creaking and needs to be modernised. I feel I would stick with MySql as DB and update / use Django / Spring or Laravel (because its php which I understand). To me, PHP feels old fashioned. I don't mind learning new things and also I want to set the system up that it can be easily migrated to Android/iOS app with SQLite. I would probably employ an experienced developer while also doing some myself. Please provide advice -- from my research it seems Spring/Java is the way to go ... not sure. Thanks
PhP might be old fashionned but Laravel is really great. I've tried nodeJs backend with express, python with flask and a little bit of serverless, and quite frankly, laravel was by far the best in my opinion. It has a lot of official packages that speeds up development (from authentification to serverless deployement), it also uses Eloquent ORM that support Mysql databases. Finally it works great with VueJs for the front end development.
I recommend ExpressJS or NestJS as BackEnd and React as Front-End and PostgreSQL as the database. The reason is as follows. First of all, since it is a financial system, various services will exist, and each service must be well connected and combined with each other. The organic combination of small services that work very well is the foundation of a great system. For this, it is best to use Node.js based, and I think ExpressJS or NestJS is the best choice. We recommend choosing React or Vue as the FrontEnd. PostgreSQL is currently the best performing database. These three combinations have many examples, and their superiority has been confirmed by my implementation in many projects already. If you are interested in my advice and have any questions, please feel free to contact me.
On my end for me it's better to choose Laravel. It has very good documentation and easy to code. The framework supports MVC and you can create either monolithic or API only. The community is also big. If you combined a Domain Driven Development (DDD) and Test Driven Development (TDD) on Laravel then it will be a superb.
Since you are using PHP more natural is Python - it can handle high traffic - Python is very effective in coding. Python is superset of Java and C++ - True Object Oriented and have very clear syntax (Spring is hard to learn and debug - you can be confused many times). It is human readable you can code 2-4 times faster with small speed sacrifice. Jinja2 is more faster/flexible Django - whatever Django is better with ORM. Flask is just proposal - many other options of web servers.
I need to build a web application plus android and IOS apps for an enterprise, like an e-commerce portal. It will have intensive use of MySQL to display thousands (40-50k) of live product information in an interactive table (searchable, filterable), live delivery tracking. It has to be secure, as it will handle information on customers, sales, inventory. Here is the technology stack: Backend: Laravel 7 Frondend: Vue.js, React or AngularJS?
Need help deciding technology stack. Thanks.
It's better to use Laravel with Vue.js and also laravel is very lightweight and speed performance.
Go for Laravel 8 (not 7, obviously because it's the latest version and has a lot of new features and bug fixes) when it comes to backend coding.
Go for Vue.js (if you don't have any preference) because it is having by default configuration setup in Laravel).
Pick MySQL or PostgreSQL both work fine.
If you know GCP, go for it, otherwise go for Heroku.
Avoid spending time on hosting setup - prefer PaaS based solutions.
In Laravel, try Laravel Breeze or Jetstream - these might make the development much faster - at least for the basic setup that is there.
I don't know anything really about CodeIgniter, but I do know that microservices are a great choice for e-commerce, as they tend to have a lot of different moving (but not necessarily connected) parts. That being said, and if you have a choice, I'd recommend Go personally. But node isn't the worst option if Go isn't something you're comfortable with.
If you know typescript and want an entire framework to work with, go wth Angular. AngularJS, to my knowledge was deprecated. React is great, popular, and you'll find a ton of support.
40-50k should not be a problem at all for the database nor for any frontend/backend combo. Laravel works pretty well with Vue.js, for example; and you can include Elasticsearch in the combo if you really need fulltext search capabilites in your app. That will be much more decisive in the final product than the frontend stack chosen.
I highly recomand using the Vue based Nuxt framework for the front end. It is not required to use the server render feature and the folder based routing and stores are really nice to work with. In addition it brings component auto import and lots of plugins neatly integrated (authentication, i18n, socket.io, etc.). If in the setup process you also chose Vuetify as a component library you will cover 98% of needed components.
As for Laravel vs CodeIginter I would chose Laravel as the safest bet. Sadly, CodeIgniter development slowed down after the main contributor's death. It is also worth mentioning, as others did, that the initial boost Vue got is from Laravel's creator and community. The simplicity and ease of use mindset is shared.
I can't speak to Angular since I haven't used it for at least 3 years (I wasn't a fan back then) but both React and Vue are great frameworks and will do the job just fine. Since you are using Laravel for the back end I'd recommend Vue. There's a lot of overlap between the communities and most Laravel developers I know do favor Vue over React.
Laravel is the best tool in php and I know it also if i don't develop in php. Vue.js is the future. In combination with https://bootstrap-vue.org/ is THE solution.
If your customer is an enterprise, I'll strongly recommend leveraging Azure or AWS for building and hosting your backend. AWS API Gateway + AWS Lambda + AWS RDS would be a good combination. You might want to run everything in your VPC if security / privacy are your top concerns.
Hi. I am a backend developer in a company tasked with recoding a legacy application, choosing the right technology stack, and then later hiring for that stack.
This is a freight/logistics application made 15 years ago in PHP with no modern framework used. In this application, customers from different countries login into theirs accounts and add a huge number of shipments, like let's say 500, and then, later on, generate PDFs for them after calling third-party APIs. This application has API integrations with lots of other companies and also offers API access to its own software as well. This application is also used in-house by warehouse people to scan different shipments using barcode scanners and to process shipments by performing different actions on them. The database being used currently is MySQL.
Now we have the choice to write this application in a modern technology stack. Performance, speed, reliability, and security are the primary concerns here.
Should I go with Java/Spring Boot with AngularJS as the front end or PHP/Laravel with Vue.js as the front end?
Switching at this point from PHP to Java will not be hard if Java is considered better here because we can hire as per our final decision.
Hi Chris, I will suggest going with Laravel and MySQL since the existing system is already in PHP it will help a lot and easier to port out to Laravel and will save a lot of time. Laravel has a very robust mechanism to handle the jobs/Queues and it comes with a lot of features.
Hi Chris, I recommend you to use Java with spring boot to rewrite your software. You will have the advantages of modern applications. The main challenge will be to cut your existing business logic to functional services (microservices) that will communicate each others. That will comes up also with the challenges of orchestrate those services but for that no worries. For the database also, will recommend Postgre too. For the front end, you can use angular, react or vue js with your backend since it will be API calls.
Hope it can help!
First of all, Java can give you definitely better speed, especially at scale. One benefit is that you can tune it for a better response time, and another one is when you'll have millions of requests per day it'll save you some infrastructure cost.
But.. will you have millions of requests a day? How much does it matter if the API response time is 10ms or 50ms?
Rewriting an existing project is a huge deal. It can take years(!), especially if the team hasn't done such a thing yet and especially if the tech stack gets completely replaced.
So I argue against rewrite in the first place. There are two older articles on the topic, but their arguments are both valid as of today: https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/ https://www.jjinux.com/2008/05/joel-on-software-never-rewrite-from.html
What I'd suggest instead is to learn refactoring strategies. Even if you have some routine with refactoring it is worth reading Fowler's refactoring book: https://book-programming.com/refactoring-books/
What I would do with a "frameworkless" PHP codebase is: - Add a framework (I would also go with Laravel, but Symfony or Phalcon would also do the job) - Isolate the existing codebase in a folder if possible without any actual changes - Route the requests through the framework (with a catch-all route) and forward the request to the existing codebase - Take a simple component/page to start with and replace the DB calls using Laravel's DB layer - Doing this "experiment", you'll have a strategy that you can apply to other components - Do the refactoring for views, controllers, etc, step by step - In case you have APIs and other kinds of components apply different strategies - Keep deploying as frequent as possible - Apply the learnings on the run and do pivots if needed
There are many more details to this, but it exceeds the scope of this answer.
About Java: last year I was part of, actually sparking the rewrite of an existing API from Symfony to Java using Spring Boot/JHipster. The bottom line is that it was a bad idea.
We had a separate PM, an Engineering Manager, and a set of developers both Java and PHP, one of the developers highly experienced with the JHipster stack. We've got the support of the CEO, and despite his strong worries, the Head of Software gave it a green light too. After 20 months the old PHP system is still running and - of course - it has more features than the Java one, because life didn't stop, business demanded new features in the live system.
Java and the whole ecosystem are very different, so even if you have people with battlefield experience with it, the complete rewrite is extremely risky.
In my opinion, it's less of a technical than a business decision. I would sit down with the person(s) paying the bill for the refactoring. I would phrase the following questions and elaborate the answer together with them: - What is the problem we want to solve? (maintainability? speed? lack of people understanding the system? security?) - Is the system legacy only technically or also in the meaning "it no longer fits the business' reality"? - What are the expected outcomes of the refactoring? - What is the budget for the new/refactored system? - What is the timeframe allowed for the refactoring/rewrite? - How does the rewrite compare to refactoring, in terms of time, money, and complexity? - What happens with the development of new features during refactoring? - What resources will be assigned to the refactoring project?
Being worked on both frameworks, I would suggest Spring Boot as it is really great when it comes to scalability. Laravel on the other hand provides great developer tools and a command line interface for the ease of development ( I really love the migrations in Laravel). If it is performance and scalability you are looking for then Spring Boot is your go to. It (and Java) has really matured over the years. Also, I would suggest you to consider Angular 2+ since AngularJs is obsolete.
Springboot (you can see for "jhipster" for a quick start with spring/angularJs ) is used in many micro service enterprise applications (they are design for), so API integration is "as easy as ABC". With this you can scale and give an answer to some of your questions: performance, speed, reliability and security. But be carefull with the learning curve...
NB: - For the DB, leave mysql and go to Postgres! their is no other option! you say thank you later! (a nosql database can be a nice tool too) - You have associated a front framework with a back framework, but they is no good reason to do that. You can use vuejs with springboot too (and i use them!)
Depends on how much time and money the company is willing to invest... But I'd recommend at least getting a start on lifting and shifting to the cloud if you have the knowledge/ability. Lots of performance gains can be made as well as cost saving. Not to mention learning how to operate on the cloud is a great thing to put on any resume these days.
Any help? 234 views but not a single advice 🙁
Much easier to work with. And naturally integrates with Vue.js. Angular is in decline. Moreover, you already live in the PHP ecosystem. While I do both Java and PHP, onboarding into the PHP ecosystem is much faster.
Which is better of Laravel, Rails and Django for creating great products quickly?
Which is better for creating open source apps that others might want to contribute to?
I want a mature tool for creating web apps that qualifies for:
- Quick prototyping
- Easy to get to production level for backend
- Maintainable and buildable by one person alone
- Enforces conformity, so others can easily read and contribute to the code, making successfully open sourcing possible
- Works well with React
- Has a mature and fairly stable ecosystem for the basics (auth, storage, db, image handling, backups, change history, etc.
- Has an ecosystem that will still be alive in 10 years, responding to changes.
I would have to learn Ruby, Python or PHP for each, so that factors in too.
I'm proficient in React and Node.js, but I feel the node backend ecosystem is too immature with a million different ways to do everything, and too many decisions to make, too much wiring to get everything to work together, and too many packages that end up not being supported a few months down the line.
Which would you choose for me to learn?
Comparing them end-to-end, Rails comes the most productive in my opinion. But there are bolder parameters you may consider. i.e. no one switches from Django to Rails to improve productivity and vice versa (probably from Laravel to one of those two).
The language's productivity also matters, which both Ruby and Python are better for that.
There is a philosophical difference between #Django and #Rails :
Django supports the "Explicit over Implicit" idea, making it easier for newcomers to understand what's going on. This idea also has downsides. This allows beginners to start working with Django without even learning Django and best practices and defer learning by using references like Stackoverflow.com, which is not a good idea because you potentially don't know things that you don't know! Also, you may find many different project styles.
On the other hand, Rails support the "Convention over configuration" and Scaffolding idea. It's easier for a Rails developer to be added to a new project or just review a random Rails project. Everything has a default and also it has some downsides as well. e.g. As a beginner, everything feels like magic in Rails, and you don't understand what is going on and how Rails understand while you didn't "explicitly" say what do you want sometimes.
Conclusion: Rails and Django are more productive and you can build projects on your own quickly (many giant startups launched this way!).Node.JS isn't immature, also sometimes shows better performance comparing the mentioned alternatives. But if you suffer from "a million different ways to do everything" and "many decisions to make", Take Ruby on Rails for sure.
P.S: for learning RoR I suggest the book/video from Michael Hartl.
I picked Django because we use it at work. But honestly, if you don't know any of them, I would look at the jobs around where you live and learn the one that either has the most jobs posted or if you can look at the trends the one that is growing the number of jobs the most.
All three would satisfy your needs and all three are good choices. Dotnet core would also be a good choice, again if there are jobs in your area for said technologies. If you literally don't care about this for employment, learn them all and just do it in alphabetical order :)
Note: I think you are wrong about Node being too immature - there are also MOSTLY standards for everything you want to do on the backend that have not changed for many years.
Rails uses too much magic and sugar. Laravel is something from the previous century. I'd say Django can be well balanced choice. I have extensive experience with all three. So, this advice based on practical projects
I recommend Ruby/Rails. I write the text in question answer form:
Yes you can use the prototyping in Rails or not. And this can be realized by adding any of testing framework like Cucumber or RSpec for example. Writing the test you can work on the application prototype without a change real code in production, or even development environment.
Easy to get to production level for backend
Yes it is easy, you are able to use the capistrano gem with its modules, if required, to deploy application to production within a day.
Maintainable and buildable by one person alone
Since the Rails gets on itself the main code part of a data processing, you are able easily to generate the required code with build-in Rails or external gem generators, and to merely maintain the your code, if you would cover it with a test of selected test framework.
Enforces conformity, so others can easily read and contribute to the code, making successfully open sourcing possible
As far as I said you can barely control a contribution to your project with using the test covering frameworks, to keep conformity the project.
Works well with React
You can use React along with any JS NPM module easily using webpacker gem.
Has a mature and fairly stable ecosystem for the basics (auth, storage, db, image handling, backups, change history, etc.
Of course the Rails framework is supported by many three-side gems, which can be found at rubygems, that support the authentication (devise), storage feature (fog), db (pg/mysql/sqlite3), image handling (rmagick), backups (backup), change history (history)
Has an ecosystem that will still be alive in 10 years, responding to changes.
Ruby/Rails with the RubyGem ecosystem is actively envolving and not plan to be collapsed and abandned with of development both Ruby language and Rails framework.
So, you can freely and fearlessly start using the Rails framework as server side base for your project.
DJango after a little practice, with migrations and support to a lot of libraries and modules is very efficient to create small projects.
Edit: Between Laravel, Django or RoR (Ruby on Rails)
Hi, Which tool will you recommend:
I need to build a web application, oriented to small businesses, like a small ERP. It will have intensive use of Sql to access a PostgreSQL database. It has to be secure, as it will handle information on customers, sales, inventory.
If you think another tool will be better, please let that know.
Thanks a lot
Laravel and Postgres will be the better solutions you can add more like Redis for caching and React/Vue for the frontend.
Check Spring, if security and reliability is needed along with Lots of Database , check Spring Data, spring web, spring security
Laravel is so very friendly in coding in backend and has a good documentation and easy to understand. It's also easy and rapid to create application on this framework. The community is also big where you can get a lot of other solutions from other developers. Same as well in Vue Js, its lightweight and very fast to compile and load. The coding is very well structured and clean. PHP has now also the features of strict type rules and Vue Js too since it's now support Typescript.
For a full-stack app or just simple APIs I'd go 100% with Laravel. You get a clean architecture, beautiful documentation and friendly and always growing community: the project is yours, from A to Z. With their docs and resources like Laracast you can start from zero and build what you want, when you want. The learning curve is definitely smaller when compared to Symfony and, with the help of a bit of "magic" (Facades etc.) you get the same results in the half of the time with cleaner code.
I am planning to develop project management system SAAS based. Can any one help me with selection of platforms from Django or Laravel and for database MongoDB or Firebase/Firestore or MySql? On front end I am going to use Quasar Framework (VueJS). Note : project will be Webapp, Mobile app and desktop app.
i find python quite resourceful. given the bulk of libraries that python has and the trends of the tech i find django which runs on python to be the framework of choice to the upcoming web services and application. Laravel on the other hand which is powered by PHP is also quite resourceful and great for startups and common web applications.
When I started on this project as the sole developer, I was new to web development and I was looking at all of the web frameworks available for the job. I had some experience with Ruby on Rails and I had looked into .net for a bit, but when I found Laravel, it felt like the best framework for me to get the product to market. What made me choose Laravel was the easy to read documentation and active community. Rails had great documentation, but lacked some features built in that I wanted out of the box, while .net had a ton of video documentation tutorials, but nothing as straightforward as Laravels. So far, I am happy with the decision I made, and looking forward to the website release!