Welcome to Hallowed Rounds
Hallowed Rounds is a place to make and preserve the record of your golf life — the courses you've played, the people you've played them with, what you thought of them, and the places you still hope to go.
At its heart is your Locker, your personal history of the game. Mark the courses you've played and build from there. Add dates, ratings, notes, photographs, scorecards and playing partners when you want to. You can keep things simple or build a remarkably detailed record over time.
But Hallowed Rounds is also about what comes next.
Explore thousands of courses, their architects and design histories. Search the game in ways that conventional course directories can't. Find courses around a destination, keep track of those you want to play, plan golf trips, and use what Hallowed Rounds knows about your golf history to help discover places that may be worth your time.
And because golf is rarely just about the course, Hallowed Rounds helps preserve the people, trips and shared experiences that go with it.
Membership is by invitation.
Finding Your Way Around
The menu has the same six sections on your computer and your phone:
- Home — your starting point. The Hallowed Rounds name at the top always brings you back here.
- Courses — your Locker and the whole course database, with its rankings and lists.
- Notes — your recent rounds and the notes you've written, with members' notes below.
- Travel — Design a Trip, Logistics/Finances and Itineraries.
- Charity Opportunities — charity outings and auctions at notable courses.
- Clubhouse — your contacts and the members of your clubs.
Your profile, verification, this Guide and signing out are under your name (or picture) at the top right.
Start with Your Locker
Your Locker is the foundation of Hallowed Rounds.
Start in Courses. Open All Courses or one of the ranking lists and tap + Played next to each course you've played. If you already keep a list, use Import your playing history to upload it as a spreadsheet instead. Don't worry about entering everything else immediately. A course can go into your Locker with a single click.
Later, you can add as much as you want:
- when you played;
- who you played with;
- your rating of the course;
- notes about the course or the round;
- photographs and videos;
- scorecards; and
- whether you belong to the club.
Over time, your Locker becomes a permanent, searchable record of your golf life.
Find and Discover Golf
Hallowed Rounds is designed not just to remember where you've been, but to help answer a more interesting question:
What should I play next?
Search the database by course, architect, geography, access, rankings and other characteristics. Ask questions in ordinary language such as:
“Colt courses in Scotland.”
“Golf Digest Public 100 courses I haven't played.”
“Top-ranked courses in South Carolina that are open to the public.”
“Courses near Pinehurst I haven't played.”
Hallowed Rounds can combine information about the golf world with your own history, so the same database becomes more useful as your Locker grows.
The goal isn't to produce somebody else's universal answer to what is “best.” It is to give you better information for deciding what is worth playing for you.
Understand the Courses
A course page is more than a listing.
Hallowed Rounds is building a detailed record of golf-course architecture and history: original designers, subsequent architects, renovations and restorations, opening dates, ranking history, access, scorecards, photographs, yardage books, major events and useful reference material.
Design History is especially important. Golf courses evolve. A course originally designed by one architect may have been substantially altered, restored or redesigned by others. Hallowed Rounds attempts to preserve that lineage rather than assigning a course to a single name.
The database gets better through the knowledge of its members. If something is missing or wrong, suggest an edit. Curators and administrators review those contributions before they become part of the permanent record.
Record What You Thought
Hallowed Rounds separates your opinion of a course from your experience on a particular day.
Your Course Rating is your considered view of the course itself, on a 0–10 scale. It can change as your views change.
An Experience Rating belongs to a particular visit. Weather, conditioning, pace, company and countless other things can make one day extraordinary and another forgettable without changing your opinion of the golf course.
Your notes can preserve both kinds of memory: what you thought about the architecture and what actually happened that day.
Photos, Scorecards and Memories
Course pages can become the visual record of your rounds.
Upload hole-by-hole photographs, general course photographs, scorecards and short videos. Build a photographic tour of a course or simply save the handful of images you want to remember.
Your personal photographs are yours. They are not automatically turned into a public gallery.
When you want to share, Hallowed Rounds gives you ways to do it deliberately — including sharing a photo tour or giving another member access to your photographs from a particular course.
The idea is simple: private by default, shared by choice.
Plan Where to Go Next
A Wish List is useful. A good golf trip requires more.
Hallowed Rounds is being built to connect course discovery with actual trip planning.
Start with a destination and find the courses worth considering around it. Narrow those down to the courses that interest you. Then determine whether they make sense together: how many days you need, how much driving is involved, and what order makes the trip work.
The goal is not for Hallowed Rounds to silently decide what your trip should be. It is to help you make better choices.
If the trip you've chosen works, Hallowed Rounds can show you how.
If one course creates an awkward three-hour detour, it should tell you.
And if replacing one course with another would save considerable driving or money without sacrificing much of what attracted you to the trip, Hallowed Rounds can point that out and let you decide.
In Travel, Design a Trip helps you shape the trip; once it's designed, Logistics/Finances keeps the practical details together — courses, dates, notes and trip expenses — and your Itineraries keep a permanent record after you return.
The People You Play With
Golf memories are often as much about the people as the courses.
The Clubhouse is where the people live. My Contacts keeps track of the people you've played with and the people you know through golf. Playing partners can be attached to individual rounds, so years later you can remember not merely that you played a course, but who was there.
Course Contacts help answer another familiar golf question: Who do I know there?
Hallowed Rounds members can also connect through clubs and groups. Under My Clubs in the Clubhouse, Members' Lounges provide a private place for members of a club or group to find one another, communicate and share relevant golf information.
Access, Hosting and the Golf Network
Some of the most memorable courses in golf are also the hardest to access.
Hallowed Rounds is developing ways for golfers to make better use of the legitimate relationships already within their golf network — while respecting clubs, hosts and the privacy of members.
Your memberships, contacts and relationships remain under your control. Hallowed Rounds should help facilitate genuine connections, not turn private clubs into a public booking marketplace.
Charity Opportunities
Access to special golf can also do some good.
Charity Opportunities brings together chances to play notable or difficult-to-access courses through legitimate charity outings and auctions. When a course has a live listing, you'll also see it on that course's page until the date passes.
For a golfer, it can be an opportunity to play somewhere extraordinary.
For the charity, the value of golf can become support for its mission.
A Community Record
No central database will ever know everything about thousands of golf courses.
Golfers collectively know an enormous amount.
Members can suggest corrections, add missing courses, contribute design-history information and identify useful source material. Curators — the members who care most about a particular club or area — steward those records and review contributions, so that over time the history here is the best anywhere.
The objective is not simply to build a large database. It is to build an increasingly accurate and useful historical record of the places where the game is played.
Your Information Is Yours
Hallowed Rounds contains information that can be quite personal: where you've played, photographs you've taken, notes you've written, people you've played with and clubs to which you belong.
The basic principle is therefore straightforward:
Your personal golf history, private notes and personal photographs are not made available to other members simply because you entered them into Hallowed Rounds.
When a feature involves sharing something, the choice should be explicit.
Hallowed Rounds Is Still Being Built
Hallowed Rounds is being developed with a relatively small community of golfers who care deeply about courses, architecture, travel and the history of the game.
Some parts are mature. Others are still evolving.
That's intentional.
If something is wrong, tell us. If an important course is missing, add it. If you know something about a course's history that we don't, contribute it. And if there's something Hallowed Rounds ought to do that it doesn't yet do, suggest it.
The aim is to build something unusually useful for people who care about golf courses — not merely a place to log rounds, but a place to remember where you've been, understand what you've seen, and figure out where you want to go next.
Upload a photo of your government ID and your handicap index. An admin reviews it once — the photo is deleted from our systems immediately after that review, whether approved or not.
ALTER TABLE public.courses ADD COLUMN IF NOT EXISTS atlas_url text;
ALTER TABLE public.courses ADD COLUMN IF NOT EXISTS article_url text;
ALTER TABLE public.courses ADD COLUMN IF NOT EXISTS logo_url text;
CREATE TABLE IF NOT EXISTS public.trade_requests (
id text PRIMARY KEY,
from_user_id uuid REFERENCES public.profiles(id) ON DELETE CASCADE,
from_club_id integer,
to_club_id integer NOT NULL,
type text DEFAULT 'trade',
status text DEFAULT 'pending',
message text,
messages text,
last_message_at timestamptz,
last_message_from uuid,
created_at timestamptz DEFAULT now()
);
ALTER TABLE public.trade_requests ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Members can read trades they are party to" ON public.trade_requests
FOR SELECT USING (
from_user_id = auth.uid() OR
to_club_id IN (
SELECT course_id FROM public.locker
WHERE user_id = auth.uid() AND is_member = true AND trade_opt_in = true
)
);
CREATE POLICY "Authenticated users can insert trades" ON public.trade_requests
FOR INSERT WITH CHECK (from_user_id = auth.uid());
CREATE POLICY "Party members can update trade status" ON public.trade_requests
FOR UPDATE USING (
from_user_id = auth.uid() OR
to_club_id IN (
SELECT course_id FROM public.locker
WHERE user_id = auth.uid() AND is_member = true AND trade_opt_in = true
)
);
-- Drop old policies if re-running DROP POLICY IF EXISTS "Auth users read ballots" ON public.ballots; DROP POLICY IF EXISTS "Admins manage ballots" ON public.ballots; DROP POLICY IF EXISTS "Auth users read ballot_courses" ON public.ballot_courses; DROP POLICY IF EXISTS "Admins manage ballot_courses" ON public.ballot_courses; DROP POLICY IF EXISTS "Users manage own votes" ON public.ballot_votes; DROP POLICY IF EXISTS "Admins read all votes" ON public.ballot_votes; DROP POLICY IF EXISTS "Users manage own panelist row" ON public.ballot_panelists; DROP POLICY IF EXISTS "Admins read all panelists" ON public.ballot_panelists; DROP POLICY IF EXISTS "Panelists manage own suggestions" ON public.ballot_suggestions; DROP POLICY IF EXISTS "Admins read all suggestions" ON public.ballot_suggestions; CREATE TABLE IF NOT EXISTS public.ballots ( id serial PRIMARY KEY, name text NOT NULL, geography text, status text NOT NULL DEFAULT 'draft', created_by uuid, created_at timestamptz DEFAULT now() ); ALTER TABLE public.ballots ENABLE ROW LEVEL SECURITY; CREATE POLICY "Auth users read ballots" ON public.ballots FOR SELECT USING (auth.uid() IS NOT NULL); CREATE POLICY "Auth users write ballots" ON public.ballots FOR INSERT WITH CHECK (auth.uid() IS NOT NULL); CREATE POLICY "Auth users update ballots" ON public.ballots FOR UPDATE USING (auth.uid() IS NOT NULL); CREATE TABLE IF NOT EXISTS public.ballot_courses ( id serial PRIMARY KEY, ballot_id integer REFERENCES public.ballots(id) ON DELETE CASCADE, course_id integer REFERENCES public.courses(id), since_year integer, UNIQUE(ballot_id, course_id) ); ALTER TABLE public.ballot_courses ENABLE ROW LEVEL SECURITY; CREATE POLICY "Auth users read ballot_courses" ON public.ballot_courses FOR SELECT USING (auth.uid() IS NOT NULL); CREATE POLICY "Auth users write ballot_courses" ON public.ballot_courses FOR INSERT WITH CHECK (auth.uid() IS NOT NULL); CREATE POLICY "Auth users delete ballot_courses" ON public.ballot_courses FOR DELETE USING (auth.uid() IS NOT NULL); CREATE TABLE IF NOT EXISTS public.ballot_votes ( id serial PRIMARY KEY, ballot_id integer REFERENCES public.ballots(id) ON DELETE CASCADE, voter_id uuid, course_id integer REFERENCES public.courses(id), tier text, updated_at timestamptz DEFAULT now(), UNIQUE(ballot_id, voter_id, course_id) ); ALTER TABLE public.ballot_votes ENABLE ROW LEVEL SECURITY; CREATE POLICY "Users manage own votes" ON public.ballot_votes FOR ALL USING (voter_id = auth.uid()) WITH CHECK (voter_id = auth.uid()); CREATE POLICY "Auth users read all votes" ON public.ballot_votes FOR SELECT USING (auth.uid() IS NOT NULL); CREATE TABLE IF NOT EXISTS public.ballot_votes_prior ( id serial PRIMARY KEY, ballot_id integer REFERENCES public.ballots(id) ON DELETE CASCADE, voter_id uuid, course_id integer REFERENCES public.courses(id), tier text, UNIQUE(ballot_id, voter_id, course_id) ); ALTER TABLE public.ballot_votes_prior ENABLE ROW LEVEL SECURITY; CREATE POLICY "Users manage own prior votes" ON public.ballot_votes_prior FOR ALL USING (voter_id = auth.uid()) WITH CHECK (voter_id = auth.uid()); CREATE POLICY "Auth users read all prior votes" ON public.ballot_votes_prior FOR SELECT USING (auth.uid() IS NOT NULL); CREATE TABLE IF NOT EXISTS public.ballot_panelists ( ballot_id integer REFERENCES public.ballots(id) ON DELETE CASCADE, user_id uuid, submitted boolean DEFAULT false, submitted_at timestamptz, PRIMARY KEY(ballot_id, user_id) ); ALTER TABLE public.ballot_panelists ENABLE ROW LEVEL SECURITY; CREATE POLICY "Users manage own panelist row" ON public.ballot_panelists FOR ALL USING (user_id = auth.uid()) WITH CHECK (user_id = auth.uid()); CREATE POLICY "Auth users read all panelists" ON public.ballot_panelists FOR SELECT USING (auth.uid() IS NOT NULL); CREATE TABLE IF NOT EXISTS public.ballot_suggestions ( id serial PRIMARY KEY, ballot_id integer REFERENCES public.ballots(id) ON DELETE CASCADE, course_id integer REFERENCES public.courses(id), suggested_by uuid, suggested_by_name text, created_at timestamptz DEFAULT now(), UNIQUE(ballot_id, course_id, suggested_by) ); ALTER TABLE public.ballot_suggestions ENABLE ROW LEVEL SECURITY; CREATE POLICY "Users manage own suggestions" ON public.ballot_suggestions FOR ALL USING (suggested_by = auth.uid()) WITH CHECK (suggested_by = auth.uid()); CREATE POLICY "Auth users read all suggestions" ON public.ballot_suggestions FOR SELECT USING (auth.uid() IS NOT NULL); -- Panelist and ballot admin designation on profiles ALTER TABLE public.profiles ADD COLUMN IF NOT EXISTS is_panelist boolean DEFAULT false; ALTER TABLE public.profiles ADD COLUMN IF NOT EXISTS is_ballot_admin boolean DEFAULT false; -- Since-year on ballot courses (run if tables already exist) ALTER TABLE public.ballot_courses ADD COLUMN IF NOT EXISTS since_year integer;