diff --git a/src/pages/songpage.rs b/src/pages/songpage.rs
new file mode 100644
index 0000000..516f998
--- /dev/null
+++ b/src/pages/songpage.rs
@@ -0,0 +1,32 @@
+#[component]
+pub fn SongPage() -> impl IntoView {
+ let params = use_params_map();
+
+ view! {
+
+ {move || params.with(|params| {
+ match params.get("id").map(|id| id.parse::()) {
+ Some(Ok(id)) => {
+ view! { }.into_view()
+ },
+ Some(Err(e)) => {
+ view! {
+
+ title="Invalid Song ID"
+ error=e.to_string()
+ />
+ }.into_view()
+ },
+ None => {
+ view! {
+
+ title="No Song ID"
+ message="You must specify a song ID to view its page."
+ />
+ }.into_view()
+ }
+ }
+ })}
+
+ }
+}
diff --git a/style/song.scss b/style/song.scss
new file mode 100644
index 0000000..e69de29