Q:

How do I give a player an item with custom name/enchantments/other properties? 

I'm used to creating Java Edition Minecraft maps, where NBT can be used to set many different block, item, and entity properties, like an item's CanPlaceOn/CanDestroy list, a chest's items, and more! 
To open my maps up to more players, I've started creating maps on Minecraft Bedrock Edition as well.  But NBT doesn't exist in BE, which I knew before, but didn't know how much of a problem I would have creating these complicated command chains. 
One of the things that I've always been doing is giving players items with custom item names, lores, enchantments, and other properties. 
But there is a problem.  All this would have been done in NBT in Java Edition.  In Bedrock, NBT doesn't exist, meaning the commands I used in JE don't work.  Are my dreams crushed? 

A:

Your dreams aren't crushed quite yet.  Although it may be true that NBT doesn't exist, that doesn't mean there's no workarounds to what you want to do! 
Here's a handy workaround that lets you give items with custom names and enchantments. 
My plan is:

Place the item you want to give in a chest. 
On command, clone the chest to the player's location. 
Use /setblock in destroy mode to destroy the chest, causing it to drop all its items on the player. 

So to do this, you're going to need to place a chest in a template location, manually prepare your item, and place it into the chest.  Here are all the things you can do to customize your item. 

Use /give with the JSON components can_place_on and can_destroy to make your item placeable/able to break blocks. 
Bring your item to an anvil to give it a custom nameuse section sign § to colour name, or to add enchantments. 
Place it in the chest. 

Now let's create the command chain we'll be using.  Place an impulse command chain of 4 blocks. 
Commands to go inside the command chain:
To give item to a player

Tell the player to clone the chest to their position. 
execute @p[name=THE_PLAYER_TO_TARGET] ~ ~ ~ clone Tx Ty Tz Tx Ty Tz ~ ~ ~

Replace Tx, Ty, and Tz with the template location in both coordinate specifications. 

Tell the player to set the block to air and destroy the chest. 
execute @p[name=THE_PLAYER_TO_TARGET] ~ ~ ~ setblock ~ ~ ~ air destroy

Kill the chest. 
kill @e[type=item,name=chest]

To summon item on the ground:

Clone the chest. 
clone Tx Ty Tz Tx Ty Tz Rx Ry Rz

T: Template location. 
R: Target location. 

Set the chest to air and destroy it. 
setblock Rx Ry Rz air destroy

Kill the chest. 
kill @e[type=item, name=chest]

Limitations
Although this trick is handy, there are some item properties that can’t be modified.  You can’t:

Change the item lore
Exceed the maximum enchantment level
Make the item unbreakable

