Bird
Raised Fist0
Supabasecloud~20 mins

Supabase architecture (Postgres, Auth, Storage, Realtime, Edge Functions) - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Supabase Architecture Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Supabase Auth Behavior
Which of the following best describes how Supabase Auth manages user sessions after login?
ASupabase Auth stores the session token only in memory and loses it on page reload.
BSupabase Auth stores a session token in local storage and automatically refreshes it using a refresh token.
CSupabase Auth requires the user to manually re-login every 30 minutes to maintain session.
DSupabase Auth uses cookies that expire immediately after login, requiring constant re-authentication.
Attempts:
2 left
💡 Hint
Think about how persistent login works in web apps.
❓ Architecture
intermediate
2:00remaining
Supabase Storage Usage Scenario
You want to store user-uploaded images in Supabase Storage. Which statement correctly describes how Supabase Storage integrates with other Supabase services?
ASupabase Storage requires manual configuration of access rules outside of Supabase Auth.
BSupabase Storage is a separate service and does not integrate with Supabase Auth for access control.
CSupabase Storage automatically replicates files into the Postgres database for backup.
DSupabase Storage uses Supabase Auth to control access to files, allowing only authenticated users to upload or download files.
Attempts:
2 left
💡 Hint
Consider how access control is unified in Supabase.
❓ service_behavior
advanced
2:00remaining
Realtime Updates with Supabase Realtime
Given a Supabase Realtime subscription to a Postgres table, what happens when a new row is inserted into that table?
AThe client subscribed to the table immediately receives a realtime event with the new row data.
BSupabase Realtime only sends events for updates, not inserts.
CThe new row is only visible after a manual refresh of the client application.
DThe client must poll the database every few seconds to see new rows.
Attempts:
2 left
💡 Hint
Realtime means instant updates pushed to clients.
❓ Configuration
advanced
2:00remaining
Edge Functions Deployment in Supabase
Which of the following is true about deploying Edge Functions in Supabase?
AEdge Functions are serverless functions deployed close to users for low latency and scale automatically.
BEdge Functions run on the client device and require manual scaling.
CEdge Functions must be deployed inside the Postgres database as stored procedures.
DEdge Functions only run during database migrations.
Attempts:
2 left
💡 Hint
Think about what 'edge' means in cloud computing.
❓ security
expert
3:00remaining
Securing Supabase Postgres with Row Level Security (RLS)
You want to ensure users can only see their own data in a Supabase Postgres table. Which RLS policy correctly enforces this?
Supabase
CREATE POLICY "Users can view their own data" ON messages FOR SELECT USING (auth.uid() = user_id);
AThe policy allows users to select rows where the Postgres user ID matches the user_id column.
BThe policy allows all users to select all rows without restriction.
CThe policy allows users to select rows where the Supabase auth.uid() matches the user_id column.
DThe policy denies all SELECT operations on the messages table.
Attempts:
2 left
💡 Hint
auth.uid() returns the current logged-in user's ID.

Practice

(1/5)
1. Which Supabase component is responsible for managing user sign-ups and logins?
easy
A. Storage
B. Postgres
C. Realtime
D. Auth

Solution

  1. Step 1: Understand Supabase components

    Supabase has several parts: Postgres for data, Auth for users, Storage for files, Realtime for live updates, and Edge Functions for custom code.
  2. Step 2: Identify user management part

    The component that handles user sign-ups, logins, and authentication is called Auth.
  3. Final Answer:

    Auth -> Option D
  4. Quick Check:

    User management = Auth [OK]
Hint: Auth means user login and signup system [OK]
Common Mistakes:
  • Confusing Postgres with user management
  • Thinking Storage handles users
  • Mixing Realtime with authentication
2. Which of the following is the correct way to initialize Supabase client in JavaScript?
easy
A. const supabase = Supabase.create('url', 'anon_key');
B. const supabase = createClient('url', 'anon_key');
C. const supabase = supabaseClient('url', 'anon_key');
D. const supabase = new Supabase('url', 'anon_key');

Solution

  1. Step 1: Recall Supabase client initialization syntax

    Supabase uses the function createClient(url, key) to create a client instance.
  2. Step 2: Match correct syntax

    const supabase = createClient('url', 'anon_key'); matches the exact syntax: const supabase = createClient('url', 'anon_key');
  3. Final Answer:

    const supabase = createClient('url', 'anon_key'); -> Option B
  4. Quick Check:

    Use createClient() to initialize Supabase [OK]
Hint: Use createClient() function to start Supabase [OK]
Common Mistakes:
  • Using new keyword with Supabase
  • Calling wrong function names
  • Mixing class and function syntax
3. Given this code snippet, what will be logged if a new row is inserted into the 'messages' table?
const subscription = supabase
  .from('messages')
  .on('INSERT', payload => {
    console.log('New message:', payload.new.text);
  })
  .subscribe();
medium
A. New message: [text of inserted row]
B. New message: undefined
C. Error: .subscribe() is not a function
D. No output, subscription does not listen to INSERT

Solution

  1. Step 1: Understand Realtime subscription

    The code listens for INSERT events on the 'messages' table and logs the new row's text field.
  2. Step 2: Analyze the callback behavior

    When a new row is inserted, payload.new contains the new row data, so payload.new.text is the inserted message text.
  3. Final Answer:

    New message: [text of inserted row] -> Option A
  4. Quick Check:

    Realtime INSERT event logs new row text [OK]
Hint: INSERT event payload.new has new row data [OK]
Common Mistakes:
  • Expecting payload.old instead of payload.new
  • Thinking .subscribe() is invalid
  • Assuming no output on INSERT
4. You wrote this Edge Function to upload a file to Supabase Storage but it fails with a permission error. What is the likely cause?
export async function POST(request) {
  const supabase = createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY);
  const data = await request.formData();
  const file = data.get('file');
  const { error } = await supabase.storage.from('avatars').upload(file.name, file);
  if (error) return new Response(error.message, { status: 400 });
  return new Response('Upload successful');
}
medium
A. Storage upload requires user session, missing auth
B. The 'avatars' bucket does not exist
C. File object is not properly extracted from formData
D. Using SERVICE_ROLE_KEY in Edge Function is insecure and disabled

Solution

  1. Step 1: Check authentication context for storage upload

    Storage upload requires a user session or proper auth context; using service role key alone in Edge Functions does not provide user session.
  2. Step 2: Identify missing user session

    Without user session, storage upload is denied due to permission error.
  3. Final Answer:

    Storage upload requires user session, missing auth -> Option A
  4. Quick Check:

    Storage upload needs user auth session [OK]
Hint: Storage upload needs user session, not just service key [OK]
Common Mistakes:
  • Assuming service role key works for storage upload
  • Ignoring bucket existence
  • Not checking file extraction from formData
5. You want to build a chat app using Supabase that updates messages live and stores user avatars. Which combination of Supabase components should you use?
hard
A. Auth for messages, Edge Functions for avatars, Storage for live updates
B. Realtime for messages and avatars, Postgres for user login
C. Postgres for messages, Storage for avatars, Realtime for live updates, Auth for user login
D. Storage for messages, Postgres for avatars, Edge Functions for live updates

Solution

  1. Step 1: Identify storage needs

    Messages are structured data best stored in Postgres; avatars are files stored in Storage.
  2. Step 2: Identify live update and user management

    Realtime provides live updates for messages; Auth manages user login.
  3. Final Answer:

    Postgres for messages, Storage for avatars, Realtime for live updates, Auth for user login -> Option C
  4. Quick Check:

    Use Postgres, Storage, Realtime, Auth together [OK]
Hint: Messages in Postgres, avatars in Storage, live with Realtime [OK]
Common Mistakes:
  • Mixing Storage with live updates
  • Using Realtime for file storage
  • Confusing Auth with data storage
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard