Journey of Many / Community

PEOPLE ARE
THE JOURNEY.

A place for dancers, creators and travellers to share what they are building, discover people on similar paths and keep the journey moving.

여정 만들기

Community feed

LIVE

Loading the community…

JOM Community

Connect through the journeys people are actually living. Share progress, opportunities, lessons, events and the work behind the journey.

Community is connected to JOM profiles and journeys so people can discover the person behind the post.

Create a post

Community is temporarily unavailable.

';return}$('jpcPosts').innerHTML=d.length?d.map(x=>{const p=x.profiles||{},n=p.display_name||p.username||'JOM Member';return '

'+esc(n)+'
'+new Date(x.created_at).toLocaleString()+'
'+esc(x.body)+'

'}).join(''):'

No posts yet. Start the conversation.

'}$('jpcCreate').onclick=()=>{if(!s){alert('Sign in through your JOM account to create a post.');return}$('jpcModal').classList.add('open')};$('jpcClose').onclick=()=>$('jpcModal').classList.remove('open');$('jpcPublish').onclick=async()=>{const body=$('jpcBody').value.trim();if(!body)return;if(!s)return;const r=await fetch(API+'/rest/v1/community_posts',{method:'POST',headers:{'apikey':KEY,'Authorization':'Bearer '+s.access_token,'Content-Type':'application/json'},body:JSON.stringify({author_id:s.user.id,body,post_type:'post',visibility:'public'})});if(!r.ok){alert('Could not publish the post.');return}$('jpcBody').value='';$('jpcModal').classList.remove('open');load()};document.addEventListener('click',async e=>{const b=e.target.closest('[data-like]');if(!b||!s)return;const id=b.dataset.like;const h={'apikey':KEY,'Authorization':'Bearer '+s.access_token,'Content-Type':'application/json'};const q=await fetch(API+'/rest/v1/community_likes?post_id=eq.'+encodeURIComponent(id)+'&user_id=eq.'+encodeURIComponent(s.user.id),{headers:h});const a=await q.json().catch(()=>[]);const method=a.length?'DELETE':'POST';const url=a.length?API+'/rest/v1/community_likes?post_id=eq.'+encodeURIComponent(id)+'&user_id=eq.'+encodeURIComponent(s.user.id):API+'/rest/v1/community_likes';const r=await fetch(url,{method,headers:h,body:method==='POST'?JSON.stringify({post_id:id,user_id:s.user.id}):undefined});if(r.ok){b.textContent=method==='POST'?'Liked':'Like'}});load()})();

JOM / Discover

FIND YOUR
PEOPLE.

Community is more than a feed. Discover people, disciplines and journeys that give you a reason to connect.

Discovering JOM members…
JOM / What happens here

MORE THAN
A FEED.

01

SHARE THE JOURNEY

Post progress, ideas, lessons, milestones, creative work and the moments that normally never make it online.

Build your journey →

02

FIND YOUR PEOPLE

Discover dancers, creators and travellers who are moving in the same direction or opening a door you did not know existed.

03

CREATE OPPORTUNITY

Community can become the place where collaborations, gigs, projects, meetups and introductions start.

OPPORTUNITIES / BUILDING

04

KEEP MOVING

Your profile, journey and community activity belong to the same JOM ecosystem so your progress does not disappear into a feed.

JOURNEY / CONNECTED

Journey of Many

YOUR JOURNEY
DOESN’T HAPPEN ALONE.

Build your profile. 여정 공유하기 Find the people who make the next chapter possible.

Start your journey

'+initial+'

'+esc(name)+'

'+esc(x.location||'JOM Community')+(tags?' · '+tags:'')+'

'+esc((x.bio||'Building a journey worth sharing.').slice(0,110))+'

View journey →

'}).join(''):'

No public members in this category yet.

'}document.querySelectorAll('.jpc-tab').forEach(b=>b.onclick=()=>{document.querySelectorAll('.jpc-tab').forEach(x=>x.classList.remove('active'));b.classList.add('active');membersRender(b.dataset.filter)});document.querySelector('[data-scroll-members]')?.addEventListener('click',()=>document.getElementById('jpcMembers')?.scrollIntoView({behavior:'smooth'}));membersLoad()})();

JOM / Community

CONNECT. CONTRIBUTE.

The feed is only the beginning. Follow people, open conversations and build relationships around the journeys happening inside JOM.

Member profiles

"+esc(c.profiles?.display_name||c.profiles?.username||"Member")+"

"+esc(c.body)+"

").join(""):"

No comments yet.

")+(token?"

":"");const f=box.querySelector("form");f?.addEventListener("submit",async e=>{e.preventDefault();const u=await current(),inp=f.querySelector("input");if(!u)return;const rr=await api("community_comments",{method:"POST",body:JSON.stringify({post_id:id,author_id:u.id,body:inp.value.trim()})});if(rr.ok){inp.value="";comments(id,box)}})}async function follow(id,b){const u=await current();if(!u){alert("Sign in through your JOM account to follow members.");return}const q=await api("community_follows?follower_id=eq."+encodeURIComponent(u.id)+"&following_id=eq."+encodeURIComponent(id));const existing=await q.json();if(existing.length){await api("community_follows?follower_id=eq."+encodeURIComponent(u.id)+"&following_id=eq."+encodeURIComponent(id),{method:"DELETE"});b.textContent="Follow";b.dataset.followed="0"}else{await api("community_follows",{method:"POST",body:JSON.stringify({follower_id:u.id,following_id:id})});b.textContent="Following";b.dataset.followed="1"}counts()}async function loadSocial(){const r=await api("community_posts?select=id,body,created_at,post_type,author_id,profiles(display_name,username)&order=created_at.desc&limit=12");const rows=await r.json();const box=document.getElementById("jpcLivePosts");if(!Array.isArray(rows)||!rows.length){box.innerHTML="

No posts yet. Start the conversation.

";return}box.innerHTML=rows.map(x=>{const p=x.profiles||{};return "

"+esc(p.display_name||p.username||"JOM Member")+"
@"+esc(p.username||"member")+" · "+new Date(x.created_at).toLocaleString()+"

Profile

"+esc(x.body)+"

"}).join("");document.querySelectorAll("[data-comments]").forEach(b=>b.onclick=async()=>{const box=document.getElementById("jpc-comments-"+b.dataset.comments);box.classList.toggle("open");if(box.classList.contains("open"))comments(b.dataset.comments,box)});document.querySelectorAll("[data-follow]").forEach(async b=>{const u=await current();if(!u)return;const q=await api("community_follows?follower_id=eq."+encodeURIComponent(u.id)+"&following_id=eq."+encodeURIComponent(b.dataset.follow));const ex=await q.json();if(ex.length){b.textContent="Following";b.dataset.followed="1"}});document.querySelectorAll("[data-follow]").forEach(b=>b.onclick=()=>follow(b.dataset.follow,b))}loadSocial();counts()})();