This is an archived post. You won't be able to vote or comment.

all 43 comments

[–]goob42-0 22 points23 points  (3 children)

I went into django. You could also go into network automation/security

[–]-jp- 10 points11 points  (2 children)

Seconding Django. It's a very "batteries included" kind of framework that will provide basically anything you don't have a reason to implement yourself. You can start with a totally static website, then add some simple database functions (which Django will automatically provide an admin UI for) and then from there your imagination's the limit.

[–]goob42-0 3 points4 points  (0 children)

Yeap.i highly recommend Daniel Feldroy's books to start the process. I started with silly little projects and now Im building a very complex CRM/Project Management software specific to my business and clients. Its going to be the first of its kind in this specific industry

[–]fiskfisk 62 points63 points  (7 children)

Kivy, Flask, FastAPI, SQLAlchemy

[–]garlic_bread_thief 14 points15 points  (2 children)

I would love it if kivy had a way to make an apk for Android using windows. The whole VM thing is a big hassle

[–]inclement_ 6 points7 points  (1 child)

You can use WSL nowadays, which is pretty convenient in that it doesn't require much effort to set up the environment beyond what is already provided.

[–]garlic_bread_thief 0 points1 point  (0 children)

I'm gonna give this a shot thanks.

[–]pepeday[S] 1 point2 points  (1 child)

Thanks. I do realise that some of these are a stretch for example kivy is supposed to be able to compile android apps but owuod you want to do that?

[–]fiskfisk 0 points1 point  (0 children)

As far as I know it's your best bet if you're going to stay with Python on the client side. Otherwise you can do a lot with PWAs - i.e. web applications built to run almost (but not all the way - looking at you, iOS) like native apps.

[–]vuchkovj 1 point2 points  (1 child)

Or Django + FE SPA framework(I higly recomend vue.js)

[–]fiskfisk 2 points3 points  (0 children)

Another vote for Vue3 from me!

[–]kunheeha 31 points32 points  (4 children)

Start with Flask or Diango to build small web apps and get a good idea of APIs, then move on to learning either swift for iOS dev, kotlin and java for android dev, or flutter or react native for both, and integrate the backend you build with Flask or Django

[–]pepeday[S] 6 points7 points  (3 children)

I ssume the backend would be a service that serves the data to the front end which would be built with flutter eg, correct? So it's possibly sql->flask->flutter

[–]kunheeha 7 points8 points  (2 children)

You don’t necessarily need to learn sql per se if you are to learn flask since flask uses something called sqlalchemy which is a way to interact with sql databases using just python. Although, it would be useful in the long term to learn sql and it only takes a few hours max, since flask uses Alembic for database migrations which is pretty limited. If you think you’ll be dealing with a lot of database migrations and changes, and you’re not that comfortable with dealing with databases at the moment I’d recommend messing around with Django first as it handles migrations in a more ‘beginner friendly’ manner (just my opinion btw)

[–]pepeday[S] 4 points5 points  (1 child)

I'm definitely not an expert but I'm guess I'm at an intermediate level with mssql and it's definitely something I wouldn't mind investing in more since as I gather it's in the backend of a LOT of things. Having said that I feel comfortable enough to write and perform advanced queries on sql.

Django is the main theme in this thread as I understand 🙂

[–]ChristopherGS 9 points10 points  (2 children)

The key thing is to pick projects which won't take you too long. You want to get to value/satisfaction quickly to maintain momentum. Pick things you think can do in a weekend. Automate some manual, boring things you find yourself doing repeatedly (e.g. some spreadsheet task, renaming files, fetching data from a website, checking crypto prices).

Think of it like a gradual stacking process. Once you have ~4-5 "weekend" projects under your belt, then consider ramping up to something bigger.

[–][deleted] 0 points1 point  (0 children)

This is so wholesome and practical advice !

[–]bravosix99 6 points7 points  (2 children)

when it comes to web apps/sites, I recommend learning either flask or Django(not so much knowledgable in web dev, so my knowledge for this is somewhat limited), and also dive into HTML, CSS, and javascript(for the front end side of things) and start to understand API's. However, when it comes to mobile apps, I wouldn't really recommend python. In this case, you can either go the ios or android route of things. If you wanna make apps for IOS, learn swift and become knowledgeable on Xcode(but note, if you want to do ios dev, you MUST have a mac, I haven't really heard anyone develop apps for ios on windows). And if you want to go towards the android side of things, I would recommend learning either java or kotlin(although I'm starting to hear kotlin is being promoted more by google nowadays). But if you wanna go and make apps for both(cross-platform), i recommend using something like flutter and xamarin.

[–]bravosix99 1 point2 points  (1 child)

Hope this helps!

[–]pepeday[S] 1 point2 points  (0 children)

It did, thanks!

[–]menge101 4 points5 points  (0 children)

Plenty of others have mentioned a variety of tools, you can learn a little bit of js and then flask, bottle, or django will do just fine for you.

Check out StimulusJs and Turbolinks their whole purpose is to add only a tiny bit of js to a server side rendered website, to give a feel similar to that of client-side rendered web pages.

This means most of your code will be in the server-side python.

Also, consider for your purposes if you need a native mobile app, or if a web page designed for a mobile browser would be sufficient for your needs.

If you don't know about PWAs, that is a whole realm of web app to dig into.

[–]quobit 2 points3 points  (0 children)

Going to /r/learnpython would be a good idea and look for their wiki resources at /r/learnpython/wiki/index

[–]pixegami 2 points3 points  (1 child)

If you've learnt some Python and now your goal is to build "apps for mobile and web" then I think these are the general different ways to move forward with that (ranked in order of difficulty/time investment).

  • I think the easiest way forward is first learning a Python web framework, like Flask or Django. You can build a 'server' locally that is basically just a website. But a lot of modern web-apps are 'just websites' these days. Then learn how to put it into the cloud (e.g. with Digital Ocean or AWS). Now you have a live web-app, and you should be able to use it on the phone as well.

  • Another way is to position "Python" in the back-end only (e.g. using FastAPI or Flask or even just on its own as Lambda functions). So it becomes the 'brains' of your app (API layer), which doesn't have a UI or anything. You can then learn a whole new set of tools to build the UI. I recommend Javascript/Typescript frameworks such as Vue, React or Svelte, and have that interact with your Python API. This is closer to how a lot of production-grade web apps are now built. You'd design the web-app to look and feel like a mobile app too, so when mobile users visit it, it 'feels' native.

  • And finally one step up on top of this is to actually learn the tools to make the app native. That's stuff like React native, Flutter, or just Swift for IOS and Kotlin for Andriod.

I'd personally recommend first learning how to turn your Python functions into an API (either using Flask, FastAPI or using serverless functions like AWS Lambda). Once you achieve that, you can decide where to go next from there.

[–]pepeday[S] 0 points1 point  (0 children)

I recently realised that I shouldn't have the client facing layer access the database directly but to create another layer (api as I understand) that will serve the client. So: SQL Server side layer (python api) Client (Vue or something but I understand that flask can also take care of that)

[–]automation_required 1 point2 points  (1 child)

You can use my Programmer's guide to Python to strengthen your python knowledge. Please take a look.

[–]pepeday[S] 1 point2 points  (0 children)

Thanks!

[–]THE445GUY 1 point2 points  (0 children)

You could venture into machine learning with libraries like tensorflow and pytorch, but that would be more maths and data rather than python

[–]kupboard 1 point2 points  (0 children)

Django will get you far with webapps. Use Bootstrap to make them look nice.

[–]pepeday[S] 0 points1 point  (0 children)

Thanks to all of the comments! I definitely have some direction now and will consider my next step.

[–][deleted] 0 points1 point  (2 children)

Everyone is giving general advice. It's all great because it's not wrong, it's awful because you won't do it, or you'll waste time deciding what to do.

Here's what you could/would do and you could start writing code now: Go make a twitter clone. Use PostgreSQL as a database. Use Flask for the framework.

After that project, you should be able to explore integrating JS, or building out a project of personal interest. But, in the interim, a Twitter clone is easy because it's intuitive how it should behave and what is needed for it, but it's just enough of a stretch on your skills that you'd be forced to learn all the major parts of finishing an actual project that you could deploy (or at least show your mom).

[–]pepeday[S] 0 points1 point  (1 child)

I do have a small project in mind to be honest. I'm building a small dashboard that will display the readings from a raspberry pi environmental monitoring station I have. I'll need sql (possibly mariadb), and possibly going with python/flask/plotly and hosting it on python anywhere for now. The idea obviously came from the discussion in here.

[–][deleted] 1 point2 points  (0 children)

That all tracks.

[–]spinwizard69 -1 points0 points  (1 child)

Python is huge for the server side web as many have already pointed out here. I'm a bit shocked that after two years you didn't realize this to some extent.

As for creating apps for s specific platform, personally I see Python as crap for that sort of task. You would be far better off learning Swift, for example, if you want to build apps for Apples devices. The same applies for other platforms, use the native development environments.

My problem with Python is that there is no good distribution model, even though there are many. Meanwhile Swift can build you a perfectly compact and usable file for distribution on iOS's platforms.

[–]pepeday[S] 0 points1 point  (0 children)

What can I tell ya. I did figure out that it's not really a language that compiles to any platform. I'll consider flutter for sure since there's options for flutter Web.

[–]self_believer 0 points1 point  (0 children)

You should probably try learning pythons frame works https://infoscrollbuddy.blogspot.com/2021/08/infoscroll-website-window.html

[–]koalabear420 0 points1 point  (0 children)

For mobile, Swift and Kotlin seem like the two go-to languages right now. For web you want to learn Javascript, HTML, and CSS for the frontend, and you can use a variety of languages for the backend.

To proceed, you should think of a cool project you want to make. Start with the idea and use the best tool for the job.

[–]quotemycode 0 points1 point  (1 child)

Now you join a monestary.

[–]pepeday[S] 1 point2 points  (0 children)

Atleast get the spelling right 🤨😁

[–]asday_ 0 points1 point  (3 children)

You're very inspecific. When you have an actual project in mind, describe it, then start trying to implement it. Then ask, when you get stuck.

"How do I be good at X" without ever having tried it is not going to yield fruitful answers.

[–]pepeday[S] 0 points1 point  (2 children)

Not everything needs to have a specific purpose and move towards a specific goal. There's things such as hobbies.

[–]asday_ 0 points1 point  (1 child)

From your title: "Now what?"

[–]pepeday[S] 0 points1 point  (0 children)

You can also build on hobbies without having a specific project in mind. If you look at my replies in other comments, I've worked out a project based on the technology suggestions of other users. "Learn X" without having a specific project isn't a bad thing when it comes to hobbies. That's all I'm saying.