How to make a Shopify App

  Рет қаралды 98,403

Coding with Jan - Shopify Developer

Coding with Jan - Shopify Developer

Күн бұрын

Пікірлер: 146
@CodingWithJan
@CodingWithJan Ай бұрын
🌟Learn the JavaScript side of Shopify Development: codingwithjan.com/javascript?src=build-app-yt 👨‍💻Find a reliable Developer for your project: www.codingwithjan.com/hire-a-develope
@ChrisJaydenBeats
@ChrisJaydenBeats 2 жыл бұрын
Great overview. Even if you’re an experienced developer - wrapping your head around this ecosystem takes some time. 💪🔥
@CodingWithJan
@CodingWithJan 2 жыл бұрын
Yes it does! 😁
@hrlrl9309
@hrlrl9309 2 жыл бұрын
I agree. The Shopify examples are too complex. It's really hard to understand things from first principles. I'm not sure why they don't include the most basic Hello World app examples and build up from there. They're using too many frameworks and assume too much knowledge of obscure things. Jan's explanation really helped.
@evaldasraisutis3058
@evaldasraisutis3058 2 жыл бұрын
Would love to see a video on app architecture for production apps! Particularly, how would you address scaling needs and noisy neighbor problem when having to run many background tasks for many stores concurrently.
@thenelson_o
@thenelson_o 3 жыл бұрын
Nice tutorial. Shipping/Logistics app would be fine. Store the user's data in your database. During checkout, user's can select your shipping method and I would calculate billing price and attach it to the total price
@aubame-bloodclut-zette6745
@aubame-bloodclut-zette6745 3 жыл бұрын
great video :D could you please create a tutorial showing how to use polaris to create the react components as well as interact with the shopify API, for example making a measurement app so which allows you to add measurements to products so customers can buy a certain amount of your product (300m of curtain etc)?
@militaryforcestv1
@militaryforcestv1 4 ай бұрын
Hey, in freemote will you add app development in the future? also, do you use hydrogen framework in freemote?
@LearnWithNoor036
@LearnWithNoor036 2 жыл бұрын
This is the first time am watching your video. Your way of explaining is pretty cool and enjoyable. I have enjoyed a lot. Thanks Jan. I am MD. Abdullah sayket from Bangladesh
@leeman3749
@leeman3749 3 жыл бұрын
Excellent tutorial. Clear and well presented. I was stuck installing and connecting and this helped a lot. Thanks so much.
@alexneagus
@alexneagus 3 жыл бұрын
Hi Jan, very informative! I'm sure you get this question all the time - I want to be at your level of proficiency with the back end coding. Where do you start to learn all these languages in a timely manner? thanks
@danielgraaf5042
@danielgraaf5042 3 жыл бұрын
When a command doesn't work first time - it's good to see that you re-run the command too. @9:52
@zeeshanaltaf9606
@zeeshanaltaf9606 3 жыл бұрын
My Favourite KZbinr 😍
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Haha never thought to hear that. I'll take it, thanks 😁
@_garebear
@_garebear 2 жыл бұрын
You rocketed me +45 days in 13m38 seconds. Take my money. :)
@CodingWithJan
@CodingWithJan 2 жыл бұрын
Awesome!! :-) You're most welcome, and I highly appreciate the super thanks! Your funds will directly be invested in a coffee 😁
@sosimplemelodies
@sosimplemelodies 3 жыл бұрын
Awesome video! looking forward to learning these new programs
@CodingWithJan
@CodingWithJan 3 жыл бұрын
🚀 awesome, let's go :-)
@skylimitproductions3509
@skylimitproductions3509 2 жыл бұрын
Fantastic video! Helped me clear up a lot of stuff before diving into details
@liamgriffin6897
@liamgriffin6897 3 жыл бұрын
Amazing video Jan! Really like the context and background you're providing here.
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Hey Liam, thanks so much 😁 Especially when someone is just starting out it's so easy to overlook, that the technical side of things is only one side of the equation.
@Bhavesh-w6o
@Bhavesh-w6o 11 ай бұрын
Fantastic video, Jan! I appreciate the background information and perspective you've provided. But for any particular extension, I'd like to know more about CSS and JS. When creating any Checkout UI extensions, I can't seem to figure out where to add CSS or JS.
@CodingWithJan
@CodingWithJan 11 ай бұрын
Okay, I feel this might be more a react-problem then. Cause if you're going off the starter templates / and Polaris components, it's mostly standard react. :-)
@Bhavesh-w6o
@Bhavesh-w6o 11 ай бұрын
@@CodingWithJan I am using javascript as extension language. The reason I am looking to write javascript is because I want to access dom-element. I am looking to pre-fill postal code input field in "Shipping Address" section. Also, I want the postal code input field to be read-only, i.e disabled. is that something possible to achieve using Shopify UI Extension?
@qemania
@qemania Жыл бұрын
I love your content .. can we have an updated version following the updates happening on Shopify (I believe it is a bit outdated now)
@RhsRasel
@RhsRasel 3 жыл бұрын
Hi Jan, really like your video. I would like to request you to make some video on Shopify App Dev. Topics- saving data to database, retrieve the data from database, showing data on app admin site etc. If possible, please make some videos on the requested topics. Thanks in advance and I'm really gratitude to you as you made some complex things too easy. Looking forward to see some awesome video.
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Hey thanks for the fantastic feedback and the ideas 😃
@johnnydriesen7575
@johnnydriesen7575 3 жыл бұрын
Amazing content. Thanks for sharing your knowledge. I was just wondering.... Does it have to be React ? (or can it be Vue as well ?)
@inutiledegliinutili2308
@inutiledegliinutili2308 3 жыл бұрын
Hi Jan, do you know how to change what sort by best selling or sort by newest does in collections? I’d like to change the code but I can’t seem to find the code anywhere
@ICOReviewtoken
@ICOReviewtoken 2 жыл бұрын
Now 15-5 -2022 and Nextjs removed when i run shopify create node
@M4rkux
@M4rkux Жыл бұрын
Great video, I needed that information, thank you.
@lts8683
@lts8683 3 жыл бұрын
ngrok is very slow with my network, Are there any alternatives?
@DhaneshYadav-to3tx
@DhaneshYadav-to3tx Жыл бұрын
How can I create the app with Laravel by follow the same instructions.
@1mrk2mrk22
@1mrk2mrk22 Жыл бұрын
Thank you very much , Are there ways to build mobile apps outside the Shopify store? Because it is so expensive there are limited options If there are good features and a cheap price, please put the link Thank you
@tohauk18
@tohauk18 2 жыл бұрын
Gold contact. Thank you Jan 💥🙌
@zzzxmichael4492
@zzzxmichael4492 3 жыл бұрын
You should make a video on how to make a ajax drawer cart for themes that don't have one. For example Turbo theme.
@KevinFeatherstone
@KevinFeatherstone 3 жыл бұрын
“Here we are in the PowerPoint of truth and justice...” hahaha :) :) :)
@CodingWithJan
@CodingWithJan 3 жыл бұрын
😁
@danielglassford9268
@danielglassford9268 2 жыл бұрын
LOL the last bit about how to like a youtube video got me like 😆
@CodingWithJan
@CodingWithJan 2 жыл бұрын
Almost forgot this one!! 😁
@hardikcomp
@hardikcomp 2 жыл бұрын
Great Video Jan, a video on "app billing" would be super great, there are no videos currently there for it
@CodingWithJan
@CodingWithJan 2 жыл бұрын
Hey Hardik, Thank you for your suggestion, It's noted.😉 You can learn more about it on the docs shopify.dev/apps/billing Have an awesome day! :-)
@pastaleshta
@pastaleshta 10 ай бұрын
I just want to create a simple app for MY store where the user has an input I make some api calls and show retrieved info. What is the best approach?
@archiee1337
@archiee1337 2 жыл бұрын
Thank you very much for this great vid!
@sandeeppangeni3114
@sandeeppangeni3114 Жыл бұрын
How can we communicate between the theme app extension and the app backend? For example. form submit and save that data to the database via the app backend. Do you have any idea about it?
@TomasMendes
@TomasMendes 3 жыл бұрын
Thank you! This is great!
@coderlicious6565
@coderlicious6565 3 жыл бұрын
Is this a necessary thing to do to avoid paying the $29 monthly for an actual Shopify account to test your themes/apps ?
@geoey567
@geoey567 2 жыл бұрын
I trust you with my lifee!
@kartikeyjangir6003
@kartikeyjangir6003 3 жыл бұрын
Love the you like youtube videos it's so unique 😂😂
@LesMenu
@LesMenu 2 жыл бұрын
very motivational, nice and helpfull video !!! thanks a tone ..
@satiscloud9703
@satiscloud9703 3 жыл бұрын
Just needed that bro!
@tochukwuokafor5768
@tochukwuokafor5768 Жыл бұрын
shopify create shows Command `create` not found. Did you mean `plugins update`?
@conexy2k7
@conexy2k7 Жыл бұрын
I have this error: Oauth error invalid_request: The redirect_uri and application url must have matching hosts where is the URL textbox inside the app configuration ?
@skillfulactor09
@skillfulactor09 3 жыл бұрын
Do you teach building theme and Shopify apps at freemote or just Shopify liquid
@shakiesanov
@shakiesanov 3 жыл бұрын
Awesome video Jan! Also is there a way to add a customer reviews section on my homepage, if my theme doesn't have one?
@CodingWithJan
@CodingWithJan 3 жыл бұрын
You can have a testimonial section, but a fully functional review section requires and app. (because reviews are stored in a database)
@thientranduy9806
@thientranduy9806 Жыл бұрын
current version 12/20/2022 will not be able to do this. Can you make a new video?
@ronnymageh
@ronnymageh 3 жыл бұрын
Oh my! Could you drop a link to the that tutorial at the very end! haha :)
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Haha 😁
@bane2256
@bane2256 3 жыл бұрын
If I am understanding correctly, a shopify developer creates themes and and apps for shopify stores. A shopify theme dev takes an existing shopify theme and modifies the code where the client requests so, using html, css, javascript, and liquid. An app dev creates apps to expand on the functionality of the client's store. App dev is generally less profitable and more difficult than theme dev. Is this correct? I'm new to the industry and want to make sure I understand things correctly.
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Hey Bane great question. So a Shopify Developer is someone who helps with the code side of things. Depending on the person's qualifications or specialisations this can either mean themes, apps or both. In general I consider customizing and extending prebuilt themes to be much more cost effective than building themes from scratch. It's an in demand skill, which can be very profitable. Building apps can also be very profitable, but the barrier of entry is just higher. Hope that helps :-)
@bane2256
@bane2256 3 жыл бұрын
@@CodingWithJan Good info, thanks. So a shopify dev can take a theme that someone else has created, import it to vs code, make changes to the existing theme code, call it their own and sell it to a client?
@mvn3949
@mvn3949 2 жыл бұрын
Is it possible to make a Shopify app using Python and Django? I am learning Django and would like to build one.
@nestorviloria6453
@nestorviloria6453 3 жыл бұрын
Hi, This is a really cool tutorial. I have just one question...How do you manage s in safari? Apparently, Apple released the Intelligent Tracking Protection (ITP) functionality a while ago and it looks like this has been a headache for Shopify developers when releasing the apps to production as their apps only work in Chrome but not Safari (iFrames). Thanks a lot.
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Hey Nestor, authentication is now supposed to be done via jwt tokens. Got an intro video on app authenticstion too. Its the next one :-)
@ak3763
@ak3763 3 жыл бұрын
how do i change position of sale price and regular price in shopify debut theme on product page?
@kulvindersingh2738
@kulvindersingh2738 3 жыл бұрын
It was helpful. Can you guide how to build a payment app in Shopify please ?
@patravel-tv3676
@patravel-tv3676 3 жыл бұрын
Nice video! I'd be interested in seeing a routing example
@deborahaanyuoduman7548
@deborahaanyuoduman7548 3 жыл бұрын
Could you do a video on how to build a Shopify shipping app using React and Node ?
@CodingWithJan
@CodingWithJan 3 жыл бұрын
That's pretty much what this video is about 😅
@deborahaanyuoduman7548
@deborahaanyuoduman7548 3 жыл бұрын
@@CodingWithJan for shipping? Using the fulfillment APIs.
@wagiewojak
@wagiewojak 2 жыл бұрын
SaaS is not "system as a service"
@anthonygibson3709
@anthonygibson3709 2 жыл бұрын
This first half of this video is just trying to discourage from building Shopify apps, so we'll buy your course. What does comparing freelancing to Shopify apps have to do with building a Shopify app? I get it. You're trying to sell your course, but we didn't click this video for that.
@tanzimmahiralvi7701
@tanzimmahiralvi7701 Жыл бұрын
How to add reviews for shopify app
@TheStreetArtRecords
@TheStreetArtRecords 11 ай бұрын
Hey Jan, hope you are doing well. I am a self-tought hobby coder. With the very minimal knowledge gained about Shopify, I am intending to create a custom payment gateway, as I am not able to connect to payment services from my country (Kosovo). Could you provide me some guidance on how to set up my app in order to integrate credit/debit card payment through local banks ? Thanks a lot for your time reading this comment.
@CodingWithJan
@CodingWithJan 11 ай бұрын
Sounds complex 😁 To be honest, I would need to do a lot of research here too.
@dawid_dahl
@dawid_dahl 2 жыл бұрын
Is it possible to get your own variables inside of liquid templates using apps? For instance if I create some kind of object in my app database, would it be possible to have this data available as a {{ placeholder variable }} in .liquid template files? Just like one would access {{ product.price_min }} or such?
@CodingWithJan
@CodingWithJan 2 жыл бұрын
Hey Dawid, :-) I think it may be possible through product Metafields. I don't believe it's good practice to operate this way either, I haven't seen any app using this pattern yet. It would be better to just use the regular way to integrate apps into a theme like ScriptTag, Assets, or App blocks which is the latest addition to Shopify Apps. Have an awesome day.
@dawid_dahl
@dawid_dahl 2 жыл бұрын
@@CodingWithJan Thank you kindly. Great advice. 🙌🏻
@rajeshkushwaha7358
@rajeshkushwaha7358 Жыл бұрын
Hi jan, I want to create third party payment provider app for shopify using Python. So please conform me shopify does support python language
@kronyxapps
@kronyxapps 2 жыл бұрын
Im having problems with ngrok its not installing the app
@learningstudios5305
@learningstudios5305 3 жыл бұрын
Please create a playlist Shopify App development with React and Node Js from scratch...
@_garebear
@_garebear 2 жыл бұрын
Thanks!
@task4store-shopifysmalltas667
@task4store-shopifysmalltas667 3 жыл бұрын
Super interesting one! How to approve the app at Shopify quickly?
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Thanks 😃 First you need to match the requirements shopify.dev/concepts/app-store/getting-your-app-approved/app-requirements And then you can hand in the app for review. :-)
@youcefwippert
@youcefwippert 3 жыл бұрын
Great video! Do you think you'll also create a Course like Freemote for Shopify Apps in the future? Would be cool
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Hey Youcci, great question :-) I could imagine something like a "how to build an App"-course, but as you know the technical side of things is only half of the equation. As for the business side of things, right now I feel much more confident to help students achieve their goals with Freelancing.
@samarpanharit4268
@samarpanharit4268 3 жыл бұрын
I know Shopify APIs very well. Both REST and GraphQL. What can I do with that? I mean how do I proceed?
@CodingWithJan
@CodingWithJan 3 жыл бұрын
The real question is, what is your goal?
@agent4701
@agent4701 2 жыл бұрын
Ich arbeite unter mac und hier gibt es den befehl "shopify create" überhaupt nicht. Kannst du das mal komplett erklären und nicht nur halb?!
@ericksoto6623
@ericksoto6623 3 жыл бұрын
Hi Jan! How can I host my custom app? I am basically new on adding an app to a host and I don´t really know how to stop using my computer as a local server.Thanks
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Hey Erick, you may want to check out Heroku. They also have a free plan :-)
@ericksoto6623
@ericksoto6623 2 жыл бұрын
@@CodingWithJan Hi Jan! Can you make a video about that? I would really appreciate it, still having issues deploying my app to Heroku. Thank you in advance. Kind Regards
@amiteshsingh6165
@amiteshsingh6165 3 жыл бұрын
how to get access token to make admin api calls
@socialwebwiki
@socialwebwiki 3 жыл бұрын
Awesome!
@akinfotech8767
@akinfotech8767 3 жыл бұрын
Hello its good video :) also i want to add ajax cart drawer in free debut theme can you please explain with code in video thanks
@anthonydavid9269
@anthonydavid9269 3 жыл бұрын
Great Work
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Thanks so much 😃
@GershonBenYitzhak
@GershonBenYitzhak 3 жыл бұрын
What switches you using?
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Extra Extra Clicky 😁 I think it's the green ones from razer.
@GershonBenYitzhak
@GershonBenYitzhak 3 жыл бұрын
@@CodingWithJan Does that mean Box Navy?
@CodingWithJan
@CodingWithJan 3 жыл бұрын
It's the green ones from here 😀www.razer.com/eu-en/razer-mechanical-switches
@matteobarberis1149
@matteobarberis1149 2 жыл бұрын
Can i communicate with an html element on my shopify theme through my app?
@CodingWithJan
@CodingWithJan 2 жыл бұрын
Hey Matteo, yes it' possible.😀
@kulvindersingh2738
@kulvindersingh2738 3 жыл бұрын
Would you please make video to create a php shopify payment app/gateway from scratch with every detail/step by step, which will accept the payments using credit card form well known as Hosted payment form. It would be a great help! thanks
@sane2205
@sane2205 3 жыл бұрын
Can you make video about Buy Button?
@scherrylovelyrics3110
@scherrylovelyrics3110 3 жыл бұрын
Gibt es eine Möglichkeit dir eine Frage bezüglich Shopify Code zu senden? Dachte ich schreibe dir auf Instagram aber hab dann deine 1. Zeile gelesen😐😅
@Aerotk
@Aerotk 3 жыл бұрын
Is there any way that i can install shopify app cli with nodejs? because shopify only give the support with Ruby right now.
@CodingWithJan
@CodingWithJan 3 жыл бұрын
I think you need Ruby. But you can still use it to create NodeJs based apps :-)
@cyberpvnk
@cyberpvnk Жыл бұрын
it seems like it's beginning to get a bit dated. Some of the commands no longer have the same format. Good delivery though. 🙂
@agent4701
@agent4701 2 жыл бұрын
mach doch mal deine videos auf deutsch! Englisch ist auf dauer echt anstrengend und ätzend :D Danke!
@ashwindibu1520
@ashwindibu1520 Жыл бұрын
Can We Use Django?
@CodingWithJan
@CodingWithJan Жыл бұрын
yes, you can use any language, but personally would prefer NodeJS, cause you'll find more prebuilt packages for shopify apps.
@paeldenjustin5271
@paeldenjustin5271 3 жыл бұрын
Can we make apps like klaviyo?
@CodingWithJan
@CodingWithJan 3 жыл бұрын
In theory yes, in practice no. I guess a dozen of developers were working on it full time for quite a while. If you add up all the working hours it likely adds up to thousands. I'd rather suggest solving a smaller / very specific problem.
@dave0811
@dave0811 2 жыл бұрын
Please make a tutorial about how to get paid.
@collinslife7021
@collinslife7021 3 жыл бұрын
Very useful
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Thanks Collin! 😃
@collinslife7021
@collinslife7021 3 жыл бұрын
For sure, even though I will be transferring my store to my own servers and start from scratch, your videos provide quality help and I hope to see more of them more often 😀👌👍
@dev6716
@dev6716 2 жыл бұрын
how we can show data to shopify store from our app :( still didn't found any solution
@CodingWithJan
@CodingWithJan 2 жыл бұрын
Hi Sajeel, You can use shopify ScriptsTags or App blocks. shopify.dev/apps/online-store/other-integration-methods Hope this helps :-)
@dev6716
@dev6716 2 жыл бұрын
@@CodingWithJan Thanks for link #Jan i really like your tutorials and learn a lot from you
@dev6716
@dev6716 2 жыл бұрын
@@CodingWithJan Please make a tutorial on this we didn't find any single tutorial on it
@versonality4435
@versonality4435 Жыл бұрын
10:00 problem solving mode = on
@a.g.hustlegarland4197
@a.g.hustlegarland4197 3 жыл бұрын
Wow dude bruh this is coool thank you my German bro
@CodingWithJan
@CodingWithJan 3 жыл бұрын
Super welcome 😃
@a.g.hustlegarland4197
@a.g.hustlegarland4197 3 жыл бұрын
@@CodingWithJan I don't know about coding. However I'm familiar with Shopify and I have an app idea for merchant's to use
@ECOMMichael
@ECOMMichael 3 жыл бұрын
Any experienced developers here looking to partner up?
@mdmathewdc
@mdmathewdc 3 жыл бұрын
I'm interested
@marians5015
@marians5015 Жыл бұрын
Real app would be great
@danielwall1277
@danielwall1277 2 жыл бұрын
What is the best way to market a shopify app you have created?
@CodingWithJan
@CodingWithJan 2 жыл бұрын
--> search traffic on the App store --> direct outreach --> partner with agencies / freelancers on affiliate --> influencer marketing
@hieucdtspk
@hieucdtspk 3 жыл бұрын
9:56 =))
@RepayEvilWithGood
@RepayEvilWithGood 3 жыл бұрын
Dude, you seem to know your stuff, but we're hoping to learn how to find a programmer who can build an app for us. Your video should be titled, "If you want to make a Shopify App yourself."
@coderlicious6565
@coderlicious6565 3 жыл бұрын
His title is fine. Most people viewing this are developers.
@siphiworatsibe5609
@siphiworatsibe5609 Жыл бұрын
I WANT TO BUILD A PRICE COMAPARISON WEBSITE.
@talbertherndon1925
@talbertherndon1925 2 жыл бұрын
This is now outdated can you please show us how to do this with the new version I keep getting errors with ngrok ERR_NGROK_3200
@ShaikKhizar-q2m
@ShaikKhizar-q2m Жыл бұрын
I am getting this error, can anyone tell how to resolve it. error │ │ │ Could not start tunnel, max retries reached │ │ │ │ To investigate the issue, examine this stack trace: │ │ at pollTunnelStatus [as _onTimeout] (Users/Desktop/the │ │ -app/node_modules/@shopify/app/dist/cli/services/dev/urls.js:78) │ │ at listOnTimeout (node:internal/timers:569) │ │ at processTimers (node:internal/timers:512)
@silvrsurfer
@silvrsurfer 2 жыл бұрын
I had an app idea but might as well give up, damn 🥲
How to find and evaluate Shopify App Ideas
12:26
Coding with Jan - Shopify Developer
Рет қаралды 16 М.
Remix - New Era of Shopify App Development
22:45
Dev With Alex
Рет қаралды 27 М.
За кого болели?😂
00:18
МЯТНАЯ ФАНТА
Рет қаралды 3,2 МЛН
Smart Sigma Kid #funny #sigma
00:33
CRAZY GREAPA
Рет қаралды 10 МЛН
Coding Is Changing...How to GET AHEAD in 2025 (must-know)
10:28
Internet Made Coder
Рет қаралды 28 М.
Shopify Functions - Introduction and Overview
15:53
Coding with Jan - Shopify Developer
Рет қаралды 22 М.
How to create a Shopify App - An overview
13:03
Coding with Robby
Рет қаралды 102 М.
How I Coded An Entire Website Using ChatGPT
18:22
Nick White
Рет қаралды 1,9 МЛН
5 SaaS Ideas You Can Build as a Solo Founder
13:30
Simon Høiberg
Рет қаралды 423 М.
Becoming a Shopify Developer in 2024 (The Truth)
6:54
Aleksander Vitkin
Рет қаралды 77 М.
Learn Bubble.io in 30 Minutes
28:45
Jesse Showalter
Рет қаралды 127 М.
Coding a FULL App with AI (You Won't Believe This)
15:19
Creator Magic
Рет қаралды 224 М.
Building a Mobile App in 2024: The BEST Technologies
13:31
Dan Ilies
Рет қаралды 101 М.
Building Shopify Apps using ChatGPT 4
25:18
WeeklyHow
Рет қаралды 1,6 М.